您的位置:首页 > 其它

Unit Test里的Data Test

2010-01-18 10:52 337 查看
用VS自带的UnitTest测试一个方法时,若需要大量的输入参数,可以按照以下方法把参数放在一个文件(数据库也可)里,可以省去重复代码。假设要测试的方法为:
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的一些介绍,可以参见http://msdn.microsoft.com/en-us/library/ms379625(VS.80).aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: