add_test Cmake

本文介绍了如何使用CMake进行项目测试,从启用测试功能到编写和配置测试用例,包括enable_testing()、add_test()和set_tests_properties()的使用。通过示例展示了如何检查测试结果,并提供了一个简单的C++程序作为测试对象,详细解释了CMakeLists.txt的配置过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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里的测试
执行结果如下图所示

### 正确配置CMake以使用PCL进行编译 为了确保能够成功利用CMake配置并编译基于PCL(Point Cloud Library)的项目,在`CMakeLists.txt`文件中需遵循特定结构和指令。以下是适用于PCL 1.2版本的一个基本配置实例: #### 设置最低CMake版本和支持的语言标准 ```cmake cmake_minimum_required(VERSION 3.0) project(PointCloudProject) set(CMAKE_CXX_STANDARD 11) ``` 此部分定义了所需的最小CMake版本以及项目的名称,并设定了C++的标准为C++11。 #### 查找PCL包及其依赖项 ```cmake find_package(PCL 1.2 REQUIRED COMPONENTS common io visualization) if (PCL_FOUND) include_directories(${PCL_INCLUDE_DIRS}) link_directories(${PCL_LIBRARY_DIRS}) endif() ``` 上述代码片段用于定位安装在系统中的PCL库,特别是指明至少需要1.2版,并确认存在必要的组件如common, io 和visualization。如果找到,则设置相应的头文件路径和库路径[^2]。 #### 定义源文件列表与创建目标程序 ```cmake add_executable(pcl_example src/main.cpp) target_link_libraries(pcl_example ${PCL_LIBRARIES}) message("Configuring pcl_example with PCL version: ${PCL_VERSION}") ``` 这里声明了一个名为`pcl_example`的目标应用程序,它由位于src目录下的main.cpp构成;接着将其链接到之前发现的所有PCL库上,并打印一条消息表明当前使用的PCL版本号。 #### 添加额外选项或特性(按需求) 对于更复杂的场景,可能还需要加入其他功能性的语句,比如处理第三方依赖关系或是调整编译器标志等。但是上面给出的基础框架已经足以让大多数简单的PCL应用正常工作。 ```python # Python不是本主题的重点,此处仅为满足示例格式要求而保留。 print("This is not relevant to the topic.") ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值