add_test Cmake

cmake可以通过add_test对本工程测试,但是这种方式比较简单,没有办法做复杂的用例测试,因此一般情况下只是做项目目录或者链接过程的一些简单工程编译类测试。如果想对项目接口完成复杂的测试,还是需要写完整的测试用例。

通过在项目根目录下的CMakeLists.txt配置文件中添加

enable_testing()
1
可以开启项目的测试功能。

一定要在根目录下的CMakeLists.txt中开启,不然执行make test时会报错。

随后项目的cmake配置文件中可以添加add_test指令

add_test(NAME <name> [CONFIGURATIONS [Debug|Release|...]]
           [WORKING_DIRECTORY dir]
           COMMAND <command> [arg1 [arg2 ...]])
1
2
3
其中通过NAME关键值指定本测试的名称,可以随意命名,
Debug/Release选项可以控制在不同的编译版本下是否进行测试。
通过WORKING_DIRECTORY可以设置工作路径,command表示可运行程序

比如:

ADD_TEST(NAME test1 COMMAND main)
1
你可以不对结果进行检查,但大多数情况下你都需要检查test1的输出结果,可以通过如下:

set_tests_properties(test1 PROPERTIES PASS_REGULAR_EXPRESSION "Hello Cmake")
1
运行cmake && make test结果如下:

Start 1: test1
1/1 Test #1: test1 ............................   Passed    0.00 sec

100% tests passed, 0 tests failed out of 1

1
2
3
4
5
如果失败的话,也会有提示

Start 1: test1
1/1 Test #1: test1 ............................***Failed  Required regular expression not found.Regex=[Hello
]  0.00 sec

0% tests passed, 1 tests failed out of 1

add_test的命令形式如下
add_test(NAME <name> COMMAND <command> [<arg>...]
         [CONFIGURATIONS <config>...]
         [WORKING_DIRECTORY <dir>]
         [COMMAND_EXPAND_LISTS])
set_tests_properties的命令形式如下
set_tests_properties(test1 [test2...] 
PROPERTIES prop1 value1 prop2 value2)
我见过的cmake工具测试的套路之一如下
首先,启动测试 enable_testing()

其次,add_test(...)

接下来,set_tests_properties(...)

案例目录如下
.
├── build
├── CMakeLists.txt
└── main.cpp

main.cpp的内容如下
#include<stdlib.h>
#include<stdio.h>
 
using namespace std;
 
int sum(int a, int b)
{
>---return a+b;
}
 
int main(int argc, char* argv[])
{
>---if(3 == argc)
>---{
>--->---cout << "parameter right" << endl;
>--->---cout << sum(atoi(argv[1]), atoi(argv[2])) << endl;
>---}
>---else
>---{
>--->---cout << "input num err" << endl;
>--->---return -1; 
>---}
 
>---return 0;
}
CMakeLists.txt的内容如下
#最小版本说明
CMAKE_MINIMUM_REQUIRED(VERSION 3.10)
 
#项目信息
PROJECT(main)
 
#生成可执行文件
ADD_EXECUTABLE(main main.cpp)
 
#使能测试
enable_testing()
 
#添加测试
add_test(demo_test main 2 3)
 
#设定测试特性
set_tests_properties(demo_test PROPERTIES PASS_REGULAR_EXPRESSION "5")
build是编译目录,方便编译出错时,清除生成的缓存文件

cd build  //进入编译目录
cmake ..   //编译主目录的CMakeLists.txt
make        //编译生成的MakeFile.txt
make test   //执行CMakeLists.txt里的测试
执行结果如下图所示

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值