单元测试所用文件链接如下:

https://files.cnblogs.com/files/wangyueyouyi/catch.7z

 

1 添加

将上述catch.hpp文件引入要测试的c++项目中。

2 使用

使用方式如下:

在catch.hpp第10892行的main函数 中写了执行测试用例的规则

 

int main (int argc, char * argv[])
{
    //查找内存泄漏代码 
    //_CrtSetBreakAlloc(19949);
    //检查是否有内存泄漏
    _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF|_CRTDBG_LEAK_CHECK_DF);

    Catch::Session session;

    //一下三行代码不可同时启用,不启用下面三行代码,默认执行所以测试用例
    //启用下行代码,表示只执行"名称"为"NIST_Cone"的测试用例
    //addTestOrTags(session.configData(),"G100P250_L1435");

    //启用下行代码,表示只执行"标签"为"[ABCD]"的测试用例,标签必须加“[...]"
    //addTestOrTags(session.configData(),"[ABCD]"); 

    //启用下行代码,表示只执行"标签"为"[ABCD]"或"[BCDE]"的测试用例
    //addTestOrTags(session.configData(),"[ABCD],[BCDE]");

    int result = session.run();

    getchar(); // YuYang Write it.
return ( result < 0xff ? result : 0xff );
}

3 编写单元测试

可以在一单独文件,专门编写单元测试用例。

首先,引入关键头文件等

#include "catch.hpp" //头文件

//必要的宏
#ifndef CATCH_CONFIG_MAIN
#define CATCH_CONFIG_MAIN
#endif

 

编写方法大致如下;

TEST_CASE("test", "[1]")  
{
    int a = sum( 2,4);  //sum是被测试的函数

    CHECK_EQUAL(a, 6);  //测试结果判断/条件
}

TEST_CASE("test2", "[1]")
{
    int a = sum( 2,4);

    CHECK_EQUAL(a, 7);
}

4 运行测试用例

注意屏蔽掉其他的main函数,直接运行时会运行catch.hpp中的main函数,从而执行单元测试用例。

5 观察测试结果

 

 测试结果中标示出了出错的用例,以及出错的位置。

 

posted on 2021-03-31 14:55  望月又一  阅读(606)  评论(0编辑  收藏  举报