走进单元测试:实战单元测试
作者:网络转载 发布时间:[ 2013/8/8 15:22:24 ] 推荐标签:
通过上面步骤的操作,会进入选择文件的界面,按照提示即可完成,当然前提你的数据文件要准备好,完成之后会出现如下代码:
/// <summary>
///Add 的测试
///</summary>
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV",
"|DataDirectory|\number.csv",
"number#csv",
DataAccessMethod.Sequential), //这个是连接字符串,你也可以手动写,不要按照上面步骤操作,当然要写对单词和“注意文件的路径”!
DeploymentItem("MyTest\number.csv"),
TestMethod()]
public void AddTest1()
{
Program target = new Program();
int numberOne = Convert.ToInt32(this.testContextInstance.DataRow["One"]); //获取数据!
int numberTwo = Convert.ToInt32(this.testContextInstance.DataRow["Two"]); ;
int expected = Convert.ToInt32(this.testContextInstance.DataRow["Except"]);
int actual = target.Add(numberOne, numberTwo);
Assert.AreEqual(expected, actual);
}
点击运行你的测试,程序会通过你设置的路径去文件里面一行一行的读取数据,然后验证数据,如果其中有一行数据报错,那么整个测试也是失败了,所以保证数据的正确性很重要!
注意:CSV默认会以Excel的方式打开,但是它里面的数据摆放有一个规则,是以逗号的形式呈现,所以我还是建议大家使用记事本来添加数据!
②使用XML作为数据文件
其实使用方法跟上面的一样,尤其注意的是你XML文件里面数据的格式!
<table> //一定要设置根节点,如果不设置在文件选择的时候会报错!
<my>
<price>1</price>
<number>1</number>
<total>1</total>
</my>
<my>
<price>2</price>
<number>2</number>
<total>4</total>
</table>
注意:怎么来获取数据呢?Convert.ToInt32(this.testContextInstance.DataRow["price"]) 通过这样的方式来获取数据,还有在选择文件时,要确认是否选中了一个数据源文件,这个不要疏忽了!
③使用数据库作为数据文件很简单,配置一下连接字符串,设置一下路径好了,在此不讲解了!
7.单元测试的利器 → “Mole”技术
首先想感谢下项目组的Tian Mi大哥是他把这项技术带给我们的,谢谢他的无私奉献!
“Mole”文件的下载地址:http://www.kuaipan.cn/index.php?ac=file&oid=29568238492847207
①应用环境:
所属模块依赖于系统的其它模块,依赖于系统的一些配置环境,还有是调用第三方接口或服务等等的场景!
在这样的场景下我们的测试是不能直接调用第三方接口或服务的,所以我们要制造一个虚拟的环境,当我们去调用接口时,Mole技术会拦截我们调用的方法,从而转向我们自己制造的虚拟环境,那么不会直接调用第三方接口和服务了!
②基本的操作流程不讲解了,如果你看了http://www.cnblogs.com/hwade/archive/2010/11/26/Moles.html这篇文章明白了,我将一些在写测试时遇到的几个小问题!
③如果“Moles”结束后,项目编译的时候报错,具体的错误我也不怎么知道了,但是我在网上搜了很久才找到答案的!
步骤:点击你的Moles文件,你会发现他是个XML配置文件,修改它的属性好了,如:
<Moles xmlns=http://schemas.microsoft.com/moles/2010/ DisableCache="true" > //增加一个DisableCache = "true"这个属性,如果遇到问题,基本都是这个问题,这样解决Ok了!
<Assembly Name="Foundation.FinanceManagement.BusinessService" />
</Moles>

sales@spasvo.com