首页 > 代码库 > 使用VS2012 C++ 进行单元测试
使用VS2012 C++ 进行单元测试
第一步 使用VS2012新建一个的控制台项目main,编辑main.cpp文件 ,代码如下
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | // main.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" int add( int a, int b) { return a+b; } int minus( int a, int b) { return a-b; } class CMath { public : CMath(); ~CMath(); int mul( int a, int b); private : }; CMath::CMath() { } CMath::~CMath() { } int CMath::mul( int a, int b) { return a*b; } int _tmain( int argc, _TCHAR* argv[]) { return 0; } |
编译 运行正确。
第二步,在解决方案里面添加一个单元测试项目 名称为UnitTestMain,如下图
第三步 , 将main工程文件目录 添加到UnitTestMain工程中的包含目录,
解决方案资源管理器 右键单击UnitTestMain工程属性-》VC++目录-》包含目录更改。
第四步,编辑UnitTestMain工程的unittest1.cpp ,代码如下
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | #include "stdafx.h" #include "CppUnitTest.h" #include "main.cpp" using namespace Microsoft::VisualStudio::CppUnitTestFramework; namespace UnitTestmain { TEST_CLASS(NoClass) { public : TEST_METHOD(add_Test) { // TODO: 在此输入测试代码 Assert::AreEqual(10,add(5,5)); Assert::AreEqual(1,add(-4,5)); Assert::AreNotEqual(1,add(15,5)); } TEST_METHOD(minus_Test) { // TODO: 在此输入测试代码 Assert::AreEqual(0,minus(5,5)); Assert::AreEqual(-4,minus(1,5)); Assert::AreNotEqual(1,minus(5,5)); } }; TEST_CLASS(CMath_Test) { private : CMath m_math; public : TEST_METHOD(mul_Test) { // TODO: 在此输入测试代码 Assert::AreEqual(10,m_math.mul(2,5)); Assert::AreEqual(15,m_math.mul(3,5)); Assert::AreNotEqual(1,m_math.mul(15,5)); } }; } |
代码说明
TEST_CLASS 宏用来填写你用 测试用例的类,名字可以随便写,但切忌不要和待测试代码的类名字相同,你也不想命名冲突吧。所以我一般取名 就是 待测类名_Test,非类函数直接NoClass。
TEST_METHOD 宏用来定义被测试方法的函数,名字也可以随便写。
给出了 一般非类测试,和类单元测试的简单代码。当然类的成员变量也可以定义测试函数中。
第五步, 编译,生成,运行UnitTestMain工程。
在解决方案资源管理器中 右键单击UnitTestMain-》生成
菜单中 测试-》运行-》所有测试,
菜单中 测试 -》 窗口-》 测试管理器 中查看测试结果,或者测试代码覆盖率
另外在测试工程中的测试源文件中,在测试函数中可以鼠标右键-》运行测试 只测试某一个测试函数。
最后附上测试结果图
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。