2014-11-25 41 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