当我们同一条测试用例根据不同的输入数据运行多次测试。为了不重复写单元测试代码。vs为我们提供了数据驱动的测试方法,数据源的文件格式可以是csv、xml、SQLServer数据库或者Orcle数据库等。
我们先来看看我们要被测试的方法:
usingSystem; namespaceConsoleApplicationUnitTest { publicclassUnitTest { publicdoubleCalculateTotalPrice(doublequantity) { doubletotalPrice; doubleunitPrice; unitPrice=16.0; totalPrice=unitPrice*quantity; returntotalPrice; } } } |
同样我们也是按照平常的方法创建一个单元测试,如下:
///<summary> ///CalculateTotalPrice的测试 ///</summary> [TestMethod()] publicvoidCalculateTotalPriceTest() { UnitTesttarget=newUnitTest();//TODO:初始化为适当的值 doublequantity=10.0F;//TODO:初始化为适当的值 doubleexpected=160F;//TODO:初始化为适当的值 doubleactual; actual=target.CalculateTotalPrice(quantity); Assert.AreEqual(expected,actual); //Assert.Inconclusive("验证此测试方法的正确性。"); } |
下面我们创建一个测试用例的数据源,打开Excel,创建一个CSV文件。输入如下的数据行。然后保存为.csv文件。
创建好数据源之后,我们就要转到测试工程中,然后打开测试视图或者测试列表编辑窗口。选中我们要连接的数据源的测试用例,右键属性,然后点击数据连接字符串,它会弹出一个连接向导,选择我们的CSV文件,然后选择刚刚保存的csv文件。选择完成之后,该测试用例的属性就会被使用到:
这时候我们的数据测试文件已经被复制到项目中。
然后我们看我们的测试函数上已经多加了几个特性。我们重新修改一下单元测试代码:
///<summary> ///CalculateTotalPrice的测试 ///</summary> [DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\testData.csv", "testData#csv",DataAccessMethod.Sequential), DeploymentItem("TestProject\\testData.csv"),TestMethod()] publicvoidCalculateTotalPriceTest() { UnitTesttarget=newUnitTest();//TODO:初始化为适当的值 //doublequantity=10.0F;//TODO:初始化为适当的值 doublequantity=Convert.ToDouble(this.testContextInstance.DataRow["Quantity"]); //doubleexpected=160F;//TODO:初始化为适当的值 doubleexpected=Convert.ToDouble(this.testContextInstance.DataRow["ExpectedPrice"]); doubleactual; actual=target.CalculateTotalPrice(quantity); Assert.AreEqual(expected,actual); //Assert.Inconclusive("验证此测试方法的正确性。"); } |
最后我们运行一下我们的测试用例,结果就是我们看到它在运行结果里面还有每一行数据的运行结果。如果其中一行数据失败,那我们的整体结果就是失败的。我们双击其中一行的结果还能进一步查看它运行的详情。
上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。