单元测试是开发人员对其所实现功能的代码进行的另外编写的测试,用于检测其代码功能的完整性、正确性和其运行效率,从而提高代码质量,并且在写单元测试时发现功能代码间的依赖等设计问题,从而提高产品的可扩展性。
这会让开发人员费更多的时间关注于这个,在短时期来看确实是这样,但放到整个产品周期中来评估的话,其时间上来说是节约的,在后期不会陷入整个产品代码无尽的Bug状态,可以说越是在后期越能显现UT的威力,还可以更自信的交出产品。
目的
单元测试用来作用于:
* 代码质量保证
在开发人员修改代码后保证不会对之前、其它代码产生影响,通过简单的运行测试就可以知道当前修改会产生哪些影响(那些Failed掉的Case即是所受影响的代码)
* 代码清晰、提高可维护性
有点代码先过自己一关的味道,这样写出来的代码更优美,更具可维护性。
* 使项目架构更合理
在进行UT,可以发现代码设计中不合理的地方,提高代码的配置性,可扩展性。
Unit Test Framework
测试框架不仅提供了一整套的判断机制,还提供了运行测试用例的工具,很方便的去运行单元测试用例。
在.NET中有几个著名的测试框架,NUnit和MS Unit是其中比较火的,关于两者的对比大家可以网上找下,选择一款适合自己的,这里呢,我们使用MS Unit。
单元测试的方法
A sample case:
1publicintAdd(intm,intn) 2{ 3returnm + n; 4} |
测试1:
在这种情况下,我们设定一个期待值,并传入两个参数进行运算,然后判断结果是不和期待值相同来进行单元测试。
1[TestMethod] 2 publicvoidAdd_Normal_Test() 3{ 4Calculator cal =newCalculator(); 5intexpect =3; 6 7intactual = cal.Add(1,2); 8Assert.AreEqual(expect, actual); 9} |
好的测试代码总是从多方面去进行测试,如考虑边界,错误情况下的处理...
1[TestMethod] 2 publicvoidAdd_Error_Test() 3{ 4Calculator cal =newCalculator(); 5intexpect =3; 6 7intactual = cal.Add(-3000,2); 8Assert.AreNotEqual(expect, actual); 9} |