CTest
2021/4/23 18:25:15
本文主要是介绍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)
2. 在test/CMakeLists.txt中写你的测试需要的即可(可以如下面那样写)
三、完整的简单测试工程
include
//sqr.h #ifndef SQR_H_#define SQR_H_ double sqr(double); #endif
View Code
src
//sqr.cpp #include "sqr.h" double sqr(double x) { return x * x; } //main.cppint main() { return 0; }
View Code
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.txtfind_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})
View Code
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)
View Code
这篇关于CTest的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-25【机器学习(二)】分类和回归任务-决策树(Decision Tree,DT)算法-Sentosa_DSML社区版
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享