.NET单元测试
定义
单元测试是一段自动化的代码,用来调用被测试的方法或类,而后去验证基于该方法或类的一些假设,白盒测试的一种。
特性
- 自动化
- 可复用
- 易于实现
- 快速运行
一个优秀的单元测试,应该是全自动的、可信赖的、可读性强、可维护的。
目的
帮助程序员较早的发现代码缺陷,提升产品质量,节省人力成本。
实践
这里我们使用VS2010自带的Unit Test进行单元测试。
场景如下,我们现在有一个功能模块能够实现计算器的功能,代码如下:
/// <summary> /// 计算器。 /// </summary> public class Calculator { /// <summary> /// 加法。 /// </summary> public decimal Plus(int a, int b) { return a + b; } /// <summary> /// 减法。 /// </summary> public decimal Subtraction(int a, int b) { return a - b; } /// <summary> /// 乘法。 /// </summary> public decimal Multiplication(int a, int b) { return a * b; } /// <summary> /// 除法。 /// </summary> public decimal Division(int a, int b) { return a/b; } }
我们需要对它进行单元测试,如图:
添加测试项目后,添加如下测试类型:
对计算器中的除法先进行测试:
[TestMethod] public void TestDivision() { var cal = new Calculator(); var result = cal.Division(4, 2); Assert.AreEqual(result, 2); }
右键Run Test(也可在左侧Run),运行后,结果为绿色,表示通过:
但如果我们对测试代码稍做调整,将除法的被除数变为0,看看会发生什么情况:
[TestMethod] public void TestDivision() { var cal = new Calculator(); var result = cal.Division(4, 0); Assert.AreEqual(result, 0); }
结果显示Failed,发生错误,表示我们的代码存在问题,未考虑除零错误,对代码进行调整:
1 /// <summary> 2 /// 除法。 3 /// </summary> 4 public decimal Division(int a, int b) 5 { 6 if (b == 0) 7 return 0; 8 return a/b; 9 }
重新运行后通过,到这里,一个简单的测试就完成了。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。