add_test¶
新增一個測試到專案中,以便由 ctest(1)
執行。
add_test(NAME <name> COMMAND <command> [<arg>...]
[CONFIGURATIONS <config>...]
[WORKING_DIRECTORY <dir>]
[COMMAND_EXPAND_LISTS])
新增一個名為 <name>
的測試。測試名稱可以包含任意字元,如果需要,可以表示為 引號引數 或 方括號引數。請參閱政策 CMP0110
。
只有在調用了 enable_testing()
命令後,CMake 才會產生測試。除非將 BUILD_TESTING
設定為 OFF
,否則 CTest
模組會自動調用 enable_testing
。
使用 add_test(NAME)
簽章新增的測試支援在 產生器表達式
中使用,這些表達式設定在由 set_property(TEST)
或 set_tests_properties()
設定的測試屬性中。測試屬性只能在建立測試的目錄中設定。
add_test
選項如下:
COMMAND
指定測試命令列。
如果
<command>
指定了由add_executable()
建立的可執行目標它將會自動被建置時建立的可執行檔位置取代。
在 3.3 版本中新增: 如果設定了目標的
CROSSCOMPILING_EMULATOR
,則會用它在主機上執行命令<emulator> <command>
在 3.29 版本中變更: 只有當
cross-compiling
時,才會使用模擬器。請參閱政策CMP0158
。在 3.29 版本中新增: 如果設定了目標的
TEST_LAUNCHER
,則會使用它來啟動命令<launcher> <command>
如果也設定了
CROSSCOMPILING_EMULATOR
,則兩者都會使用<launcher> <emulator> <command>
可以使用
產生器表達式
指定命令。CONFIGURATIONS
將測試的執行限制為僅限於已命名的組態。
WORKING_DIRECTORY
設定測試屬性
WORKING_DIRECTORY
,以便在其中執行測試。如果未指定,測試將在CMAKE_CURRENT_BINARY_DIR
中執行。可以使用產生器表達式
指定工作目錄。COMMAND_EXPAND_LISTS
在 3.16 版本中新增。
COMMAND
引數中的列表將會展開,包括使用產生器表達式
建立的列表。
如果測試命令以程式碼 0
結束,則測試通過。非零結束代碼表示「失敗」的測試。測試屬性 WILL_FAIL
反轉了此邏輯。請注意,即使 WILL_FAIL
為 true,系統級測試失敗(例如分段錯誤或堆積錯誤)仍然會導致測試失敗。寫入 stdout 或 stderr 的輸出會被 ctest(1)
擷取,並且只會透過 PASS_REGULAR_EXPRESSION
、FAIL_REGULAR_EXPRESSION
或 SKIP_REGULAR_EXPRESSION
測試屬性影響通過/失敗狀態。
在 3.16 版本中新增: 新增 SKIP_REGULAR_EXPRESSION
屬性。
使用範例
add_test(NAME mytest
COMMAND testDriver --config $<CONFIG>
--exe $<TARGET_FILE:myexe>)
這會建立一個名為 mytest
的測試,其命令會執行 testDriver
工具,並傳遞組態名稱和目標 myexe
產生的可執行檔的完整路徑。
建議使用上面的命令語法,而不是較舊且較不靈活的形式
add_test(<name> <command> [<arg>...])
新增一個名為 <name>
的測試,並使用給定的命令列。
與上面的 NAME
簽章不同,目標名稱在命令列中不受支援。此外,使用此簽章新增的測試不支援命令列或測試屬性中的 產生器表達式
。