首页 > 代码库 > 使用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-》生成

   菜单中 测试-》运行-》所有测试, 

  菜单中 测试 -》 窗口-》 测试管理器 中查看测试结果,或者测试代码覆盖率

  

  另外在测试工程中的测试源文件中,在测试函数中可以鼠标右键-》运行测试  只测试某一个测试函数。 

  最后附上测试结果图