觉得在开发时写测试用例会很有趣,也可能会比较严密,想学习一下,便从 VS2013 的使用开始。
一开始跟着这个链接 http://www.w2bc.com/Article/11186 学习了 C# 控制台程序的简单单元测试,非常顺利地完成了,其中有一个重要注意点,就是“在单元测试项目中引用控制台项目”,通过这个引用,才能够使得单元测试项目能够“看见”(可能是链接?)到原控制台项目的代码。这个引用的添加很简单,直接在测试项目中的引用那一栏右键添加即可。
文章值得学习的还有测试命名规范,自己注意区分命名测试类和测试方法就行。
另外,就是安装 Unit Test Generator 工具使得编写测试代码更方便。
然后参考链接 http://www.it165.net/pro/html/201310/7539.html 学习 C++控制台程序的单元测试,不太顺利。链接文中很详细地说明了项目属性的设置,虽然字眼有些拗口(应该原博文是台湾人写的,”配置属性“说成“组态属性”,”常规“说成”一般“),但是能够通过图片大概了解设置。最重要的是把需要原控制台项目的”项目默认值:配置类型”设置为“静态库(.lib)”,其他的我没有设置,然后 include 的时候很麻烦,也不知道是否因为配置跟路径有关,我只能直接把完整路径写进去:
#include "E:\Calculator\Calculator\Calculator.h"
然后添加引用
测试就可以跑了,当然是因为复制了代码。
然后,我发现总是单元测试类里面的方法,于是我在类外(在头文件里)写了一个完整的函数:
int addSum(int x, int y)
{
return x + y;
}
生成解决方案失败,说是:
错误 1 error LNK2005: "int __cdecl addSum(int,int)" (?addSum@@YAHHH@Z) 已经在 CalculatorTest.obj 中定义 E:\Post GSMM\Calculator\CalculatorUnitTest\Calculator.lib(Calculator.obj) CalculatorUnitTest
错误 2 error LNK1169: 找到一个或多个多重定义的符号 E:\Post GSMM\Calculator\Debug\CalculatorUnitTest.dll 1 1 CalculatorUnitTest
于是我不解了,又没有重载或重定义的样子啊?但我把 addSum() 函数完整定义放在 cpp 文件中,只在头文件中声明该函数,然后生成成功了。这个问题有待解答啊。
单元测试学习初入门,有待以后写程序时用用。
注意!!:没有把控制台项目的”项目默认值:配置类型”设置为“静态库(.lib)”,或者没有把引用添加到测试项目上去,都会出现“error LNK2019:无法解析的外部符号...”,大概是因为不设置为静态库,测试项目就无法访问控制台项目的代码,而没有引用的话,连去哪里找控制台代码都不知道。