阅读 277

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

 

 

©著作权归作者所有:来自51CTO博客作者wx60826a905fae1的原创作品,如需转载,请注明出处,否则将追究法律责任


文章分类
后端
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐