FindCxxTest

尋找 CxxTest 單元測試框架。

尋找 CxxTest 套件,並宣告一個輔助巨集,用於建立單元測試並將其與 CTest 整合。

輸入變數

CXXTEST_USE_PYTHON

自 1.3 版起已棄用。

僅在系統上偵測到 Python 和 Perl 時使用,以控制使用哪個 CxxTest 程式碼產生器。僅對 CxxTest 版本 3 有效。

在這個尋找模組的舊版本中,此變數控制是否使用 Python 測試產生器而不是 Perl 測試產生器,無論使用者安裝了哪種腳本語言。

CXXTEST_TESTGEN_ARGS

在 2.8.3 版中新增。

指定要傳遞給 CxxTest 程式碼產生器的選項清單。如果未定義,則會傳遞 --error-printer

結果變數

CXXTEST_FOUND

如果找到 CxxTest 框架則為 True

CXXTEST_INCLUDE_DIRS

CxxTest include 目錄的位置

CXXTEST_PERL_TESTGEN_EXECUTABLE

基於 Perl 的測試產生器

CXXTEST_PYTHON_TESTGEN_EXECUTABLE

基於 Python 的測試產生器

CXXTEST_TESTGEN_EXECUTABLE

在 2.8.3 版中新增。

實際使用的測試產生器(根據使用者偏好和系統中找到的直譯器選擇)

CXXTEST_TESTGEN_INTERPRETER

在 2.8.3 版中新增。

系統上 Perl 或 Python 可執行檔的完整路徑,在無法使用其 shebang 行執行腳本的平台上。

模組命令

cxxtest_add_test

建立 CxxTest 執行器,並將其加入 CTest 測試套件

CXXTEST_ADD_TEST(<test_name> <gen_source_file>
                 <input_files_to_testgen>...)

參數

test_name

測試的名稱

gen_source_file

將由 CxxTest 產生的產生來源檔名

input_files_to_testgen

包含要在此執行器中包含的 CxxTest::TestSuite 的標頭檔清單

範例用法

如果找到 CxxTest,以下範例將

  • 在二元樹中,從目前來源目錄中的 "foo_test.h" 自動產生 foo_test.cc。

  • 建立名為 unittest_foo 的可執行檔和測試。

find_package(CxxTest)
if(CXXTEST_FOUND)
  include_directories(${CXXTEST_INCLUDE_DIR})
  enable_testing()
  CXXTEST_ADD_TEST(unittest_foo foo_test.cc
                   ${CMAKE_CURRENT_SOURCE_DIR}/foo_test.h)
  target_link_libraries(unittest_foo foo) # as needed
endif()

foo_test.h 包含

#include <cxxtest/TestSuite.h>
class MyTestSuite : public CxxTest::TestSuite
{
public:
   void testAddition( void )
   {
      TS_ASSERT( 1 + 1 > 1 );
      TS_ASSERT_EQUALS( 1 + 1, 2 );
   }
};