Unit Test里的Data Test
2010-01-18 10:52
337 查看
用VS自带的UnitTest测试一个方法时,若需要大量的输入参数,可以按照以下方法把参数放在一个文件(数据库也可)里,可以省去重复代码。假设要测试的方法为:
右键这个方法,自动创建出unittest工程,这个大家都知道的,就不说了
创建的测试代码如下:
在菜单中选择Test下的Windows=>TestView
图。。。
在出现的TestView列表中选择要测试的方法,右键选择属性
图。。。
点DataConnectionString右边的小button,
图。。。
我们可以选择其中任一种,这里我们选择xml,这个xml中描述了我们需要用到的数据
图。。。
如果xml格式正确,可以预览出
我的xml如下:
一路OK下去,最后发现我们的测试方法上面增加了一段话:
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML","|DataDirectory|\\SumParameters.xml","",DataAccessMethod.Sequential),DeploymentItem("××××.UnitTest\\SumParameters.xml"),DeploymentItem("ConsoleApplication1.exe"),TestMethod()]
DeploymentItem中指定了xml文件的路径,如果改变了xml的路径,也要在这里做相当的更改。
下面我们改一下测试方法的代码:
我们可以用TestContext.DataRow去访问测试数据中的字段。
在xml中我们的测试数据有三条,在run这个测试方法时,unittest会依次获取这三条记录并运行。我们的代码中只用写一次,挺帅的,哈哈
关于unittest的一些介绍,可以参见http://msdn.microsoft.com/en-us/library/ms379625(VS.80).aspx
staticintSum(intx,inty) { returnx+y; }
右键这个方法,自动创建出unittest工程,这个大家都知道的,就不说了
创建的测试代码如下:
///<summary> ///AtestforSum ///</summary> [TestMethod()] [DeploymentItem("ConsoleApplication1.exe")] publicvoidSumTest() { intx=0;//TODO:Initializetoanappropriatevalue inty=0;//TODO:Initializetoanappropriatevalue intexpected=0;//TODO:Initializetoanappropriatevalue intactual; actual=Program_Accessor.Sum(x,y); Assert.AreEqual(expected,actual); Assert.Inconclusive("Verifythecorrectnessofthistestmethod."); }
在菜单中选择Test下的Windows=>TestView
图。。。
在出现的TestView列表中选择要测试的方法,右键选择属性
图。。。
点DataConnectionString右边的小button,
图。。。
我们可以选择其中任一种,这里我们选择xml,这个xml中描述了我们需要用到的数据
图。。。
如果xml格式正确,可以预览出
我的xml如下:
<InputParameter> <Parameter> <x>0</x> <y>0</y> <expect>0</expect> </Parameter> <Parameter> <x>65536</x> <y>1</y> <expect>65537</expect> </Parameter> <Parameter> <x>-65536</x> <y>-1</y> <expect>-65537</expect> </Parameter> </InputParameter>
一路OK下去,最后发现我们的测试方法上面增加了一段话:
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML","|DataDirectory|\\SumParameters.xml","",DataAccessMethod.Sequential),DeploymentItem("××××.UnitTest\\SumParameters.xml"),DeploymentItem("ConsoleApplication1.exe"),TestMethod()]
DeploymentItem中指定了xml文件的路径,如果改变了xml的路径,也要在这里做相当的更改。
下面我们改一下测试方法的代码:
///<summary>
///AtestforSum
///</summary>
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML","|DataDirectory|\\SumParameters.xml","",DataAccessMethod.Sequential),DeploymentItem("Microsoft.SeoTools.UnitTest\\SumParameters.xml"),DeploymentItem("ConsoleApplication1.exe"),TestMethod()]
publicvoidSumTest()
{
intx=int.Parse(TestContext.DataRow["x"].ToString());
inty=int.Parse(TestContext.DataRow["y"].ToString());
intexpected=int.Parse(TestContext.DataRow["expect"].ToString());
intactual=Program_Accessor.Sum(x,y);
Assert.AreEqual(expected,actual);
}
我们可以用TestContext.DataRow去访问测试数据中的字段。
在xml中我们的测试数据有三条,在run这个测试方法时,unittest会依次获取这三条记录并运行。我们的代码中只用写一次,挺帅的,哈哈
关于unittest的一些介绍,可以参见
相关文章推荐
- Unit Test里的Data Test
- data driven unit test
- Data-Driven Unit Test with Excel 2007要点
- The unit test adapter failed to connect to the data source or to read the data.
- Unit Test Your .NET Data Access Layer
- PyCharm鼠标右键不显示Run unittest方法
- VS2012 Unit Test(Void, Action, Func) —— 对无返回值、使用Action或Func作为参数、多重载的方法进行单元测试
- 单元测试方法属性(Unit Test Method Attribute)
- Microsoft Unit Test
- 引入unittest和HTMLTestRunner来进行自动化回归
- python学习笔记(excel+unittest)
- CodeSign error: code signing is required for product type 'Unit Test Bundle' in SDK 'iOS 8.0'
- (4.5.4)Android测试TestCase单元(Unit test)测试和instrumentationCase单元测试
- iOS XCTest->UnitTest总结
- Image Classification: Data-driven Approach, k-Nearest Neighbor, train/val/test splits
- C++单元测试工具unittest++使用小结
- selenium一个完整的unittest测试框架格式(单线程,非测试报告)
- unittest框架测试项目讲解
- 《xUnit Test Patterns》学习笔记1 - Test Smell
- JUnit Test in Spring Context with JNDI Data Source