2014-11-25 119 views
2

我已经使用CMake来创建一个库,然后做了一个测试exe。建立后,我想自动运行我的测试用例。这是我的CMakeLists.txt。它使.exe确定但不运行它。我正在使用Linux。使用Cmake运行CppuTests

cmake_minimum_required (VERSION 2.8.7) 
project (tests) 

set(LIBRARY_NAME exetests) 
set(LIBRARY_SOURCES RunAllTests.cpp Tests.cpp) 

set(CMAKE_CXX_FLAGS "-fPIC -Werror -O2 -std=c++0x -g") 

add_executable(exetests ${LIBRARY_SOURCES}) 
target_link_libraries(exetests CppUTest) 
target_link_libraries(exetests CppUTestExt) 
target_link_libraries(exetests testLibrary) 

#THIS IS WRONG. EXE is not Run 
add_custom_target(COMMAND ./exetests) 

回答

2

可以使用CTest通过CMake的创建可执行文件的测试。在你的CMakeLists.txt,使用命令enable_testingadd_test

... 
enable_testing() 
... 
add_executable(exetests ${LIBRARY_SOURCES}) 
... 
add_test(NAME mytest1 COMMAND exetests) 
在您的二进制文件目录

,编译make exetestsctest运行测试。有些附加信息可以在CMake Wiki找到。

+0

我所寻找的是当我建立的代码可以自动运行测试。 – user1876942 2014-11-26 07:52:43

+1

最后我用add_custom_command – user1876942 2014-11-26 09:31:59

0

从文档:

第二签名添加自定义命令到目标,诸如图书馆或可执行文件。这对于在构建目标之前或之后执行操作很有用。该命令成为目标的一部分,并且只会在目标本身构建时执行。如果目标已经建立,则该命令将不会执行。

add_executable(RunAllTests RunAllTests.cpp) 
target_link_libraries(RunAllTests imp_cpputest LedDriverTest LedDriver sprintfTest RuntimeErrorStub) 
add_custom_command(TARGET RunAllTests COMMAND cd ../bin && ./RunAllTests POST_BUILD) 
+0

虽然这是你的方式,但在每次构建之后都运行* all *测试通常是一个坏主意。它只是不缩放。 – DevSolar 2016-02-29 09:23:28