add_test¶
新增一個測試到專案中,並由 ctest(1)
執行。
add_test(NAME <name> COMMAND <command> [<arg>...]
[CONFIGURATIONS <config>...]
[WORKING_DIRECTORY <dir>]
[COMMAND_EXPAND_LISTS])
新增一個名為 <name>
的測試。測試名稱可以包含任意字元,如果需要,可以使用 引號引數 或 方括號引數 表示。請參閱政策 CMP0110
。
只有在調用 enable_testing()
命令後,CMake 才會產生測試。CTest
模組會自動調用 enable_testing
,除非 BUILD_TESTING
設定為 OFF
。
使用 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
簽章不同,命令列中不支援目標名稱。此外,使用此簽章新增的測試不支援命令列或測試屬性中的 產生器表達式
。