单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java/C++/C#里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。
以下是在Windows平台上,采用VS2013开发环境实现对C++程序的单元测试环节的实践。
首先定义一个简单的类作为测试样本:
class sum{
private:
int a,b;
public:
sum(int a,int b)
{this->a=a,this->b=b;}
int getsum()
{
return a+b;
}
};
这是一个简单的类,拥有两个int类型的私有成员以及一个用于求和的共有成员函数getsum;接下来就要对这些代码编写单元测试来检验其正确性了。由于VS2013为开发者提供了相应的测试环境,我们只需要在此基础上编写少量的代码便可实现单元测试。首先建立一个用于测试的项目,如下图:
建立好项目之后,找到项目资源里的unittest1.cpp(未改变项目名),我们只需要在这个源文件里写适量的程序便可以进行单元测试了,当然,如果被测试的类分别被保存在头文件(.h)和源程序(.cpp)里面,只需要用预处理命令将它们包含在测试程序里即可。为方便起见,我直接将类的定义写在了测试程序里,如下图:
测试类成员函数正确性,那么就需要我们根据设计来指定一个与某一组输入数据对应的输出期望值Expect和实际上函数返回的值Real,那么编写的单元测试程序要做的就是对于对比Expect与Real是否相等,之后就交由VS进行测试了。测试用例如下图:
当编写完成后即可以开始测试了,点击TEST菜单项选择RUN>>All Tests项。测试正确如下图:
假设对于上面例子,假设期望值是5来模拟一个测试错误的例子,结果如下图:
有时候我们需要对多组数据进行测试或者不同的方式,那么只需要在上面程序里添加新的TEST_METHOD即可,如下图:
以上就是对C++程序进行单元测试的一次简单实践。