单元测试所用文件链接如下:
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 观察测试结果
测试结果中标示出了出错的用例,以及出错的位置。
行万里路,不忘初心!