CTest 简介

CTest 简介

一、初识CTest

CTest是CMake集成的一个测试工具,在使用CMakeLists.txt文件编译工程的时候,CTest会自动configure、build、test和展现测试结果

CTest有两个模式:

  • 模式一: 使用CMake configure 和 build工程,在CMakeLists.txt文件中,使用特殊的命令去创建tests。CTest用来执行那些测试

  • 模式二: 使用CTest来执行一个script(这个script的语法必须和CMakeLists.txt相同),去控制整个程序的输出结果

二、使用方法

目前我们在工程中这样构建单元测试

project
|--------include
|
|--------src
|
|-----------test
| |---CMakeLists.txt
|
|--------CMakeLists.txt
  1. 在外面的CMakeLists.txt中我们这样写
cmake_minimum_required(VERSION 2.8)
project(test)
....
add_subdirectory(test)
enable_testing()
add_test(NAME mytest COMMAND Test)
  1. 在test/CMakeLists.txt中写你的测试需要的即可(可以如下面那样写)

三、完整的简单测试工程

include


src
//sqr.cpp
#include "sqr.h"
double sqr(double x) {
return x * x;
}
//main.cpp
int main()
{
return 0;
}


test
//test.cpp
#include "sqr.h"
#define BOOST_TEST_MODULE SqrTests
#include
BOOST_AUTO_TEST_CASE(FailTest)
{
BOOST_CHECK_EQUAL(5, sqr(2));
}
BOOST_AUTO_TEST_CASE(PassTest)
{
BOOST_CHECK_EQUAL(4, sqr(2));
}
//CMakeLists.txt
find_package(Boost COMPONENTS system filesystem unit_test_framework REQUIRED)
include_directories(include ${Boost_INCLUDE_DIRS}/boost)
add_definitions(-DBOOST_TEST_DYN_LINK -g)
add_executable(Test test.cpp)
target_link_libraries(Test sqr ${Boost_FILESYSTEM_LIBRARY}
${Boost_SYSTEM_LIBRARY}
${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})
message(WARNING ${Boost_FILESYSTEM_LIBRARY})
message(WARNING ${Boost_SYSTEM_LIBRARY})
message(WARNING ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})


CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(test)
include_directories(include)
add_library(sqr STATIC src/sqr.cpp)
add_executable(demo src/main.cpp)
target_link_libraries(demo sqr)
add_subdirectory(test)
enable_testing()
add_test(NAME mytest COMMAND Test)


参考文档:
https://gitlab.kitware.com/cmake/community/-/wikis/doc/ctest/Testing-With-CTest
https://cmake.org/cmake/help/latest/manual/ctest.1.html
https://cmake.org/cmake/help/v2.8.12/ctest.html
https://linux.die.net/man/1/ctest
https://github.com/Azure/ctest
https://github.com/bvdberg/ctest
https://github.com/bvdberg/ctest
https://docs.nersc.gov/services/cdash/with_cmake/

posted @   michaelchengjl  阅读(7263)  评论(1编辑  收藏  举报
编辑推荐:
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
阅读排行:
· Blazor Hybrid适配到HarmonyOS系统
· 万字调研——AI生成内容检测
· 解决跨域问题的这6种方案,真香!
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
点击右上角即可分享
微信分享提示