一、 单元测试
是软件测试方法的其中一种,其中还有比如动态黑盒测试、数据测试、破坏性测试等等。
单元测试也称之为“模块测试”,是对程序设计中的最小单元——函数进行测试的一种方法,所谓测试,就是验证我们自己编写的方法能不能够得到正确的结果,即用方法得到的结果与真实结果进行比对,这就称之为测试。建立单元测试首先需要建立一个测试项目,具体操作如下:
二、 控制台程序的单元测试
1、 首先建立一个类库项目,里面包含一个计算类Calculate.cs,该类里面包含一个计算加法的方法Add,声明如下:
namespace核心类
{
publicclassCalculate
{
publicdouble Add(double d1,double d2)
{
return d1 + d2;
}
}
}
生成项目之后会有一个“核心类.dll”,
那么这个方法需要进行测试,就要建立一个测试项目,建立对应的测试项目有两种方法:
2、 建立测试项目
方法一、
在解决方案中再添加一个新的测试项目,“右击/添加/新建项目”,在左侧选择“测试”模板,确定即可,如下
namespace测试类
{
[TestClass]
publicclassCalculateTest1
{
[TestMethod]
publicvoid AddMethod1()
{
Calculate cal = newCalculate();
double d1 = 110;
double d2 = 220;
Assert.AreEqual(cal.Add(d1,d2),230);
}
}
}
注意我们需要手动更改类名和方法名,都改成以Test1和Method1结尾。生成解决方案的时候,我们打开“测试资源管理器窗口”及执行菜单命令“测试/窗口/测试资源管理器”就可以了,然后就可以看见每一个对应的方法所对应的测试方法名称,我们可以选择运行单个方法,也可以选择运行所有的测试方法。那么测试的方法体怎么去写呢?
由于测试本来的意义就是验证一个方法你能不能得到正确的计算结果,所以我们需要找出一个正确的计算结果,与方法计算的结果进行比较就可以了,实现如下:
using System;
usingMicrosoft.VisualStudio.TestTools.UnitTesting;
using核心类; //这里需要先手动添加自定义的程序集
namespace测试类
{
[TestClass]
publicclassCalculateTest1
{
[TestMethod]
publicvoid AddMethod1() //这是方法体部分
{
Calculate cal = newCalculate();
double d1 = 110;
double d2 = 220;
Assert.AreEqual(cal.Add(d1,d2),330); //使用Assert静态类
}
}
}
然后在测试资源管理器中运行该方法的测试结果,运行能够正常通过,如果将上面的330改为230,很显然,两者结果不相等,测试不通过,会在测试资源管理器中显示出来。
方法二、
不需要手动添加测试项目,让VS自动完成,具体操作如下:
在需要进行测试的方法上即Add上“右击/创建单元测试”,VS会自动创建一个测试项目,如下所示:
namespace核心类.Tests
{
[TestClass()]
publicclassCalculateTests
{
[TestMethod()]
publicvoid AddTest()
{
Calculate cal = newCalculate();
Assert.AreEqual(cal.Add(200, 300), 500);
}
}
}
测试方法体是自己添加的。其他的操作一样。
三、 注意事项
在测试类中必须要引入的命名空间
usingMicrosoft.VisualStudio.TestTools.UnitTesting;
自动创建的测试项目我们不用管,但是如果是自己手动创建的测试项目还必须手动添加程序集
Microsoft.VisualStudio.QualityTools.UnitTestFramework
1、测试项目和被测试项目之间的名称是具有关系的,具体如下对应关系
(测试项目名——测试项目名Tests)
(命名空间——命名空间.Tests)
(测试类名——测试类名Tests)
(测试方法——测试方法Test)
2、在测试类中,类必须使用特性[TestClass()]或者是[TestClass]修饰,测试的方法必须使用[TestMethod()]或者是[TestMethod]修饰,
3、测试方法的返回类型必须为void ,并且测试函数不能够有参数
4、在测试方法中的代码一般都是分为以下两个步骤
(1) 创建测试类的对象Calculate cal = newCalculate();
(2) 使用断言来判断测试结果Assert.AreEqual(cal.Add(200, 300), 500);
5、Assert静态类的相关判断方法(自己去查看定义即可)