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.cpp

int main()

{

    return 0;

}
View Code

test

//test.cpp

#include "sqr.h"

#define BOOST_TEST_MODULE SqrTests

#include <boost/test/unit_test.hpp>

 

 

 

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})
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

 

 

你可能感兴趣的:(test)