2010-11-28 76 views
14

我的項目使用CMake作爲其構建系統,我希望它能夠執行我的Boost.Test測試用例。如何在基於CMake的項目中使用Boost.Test?

我該如何做到這一點?在Boost.Build中,我可以這樣做:

import testing ; 

use-project /my_lib : ../src ; 

unit-test my_test 
      : my_test.cpp 
      /my_lib 
      boost_unit_test_framework 
     ; 

lib boost_unit_test_framework ; 

回答

14

CMake本身只是一個構建系統; CTest是一個與CMake集成的測試運行器。也沒有一個單元測試框架;該工作可以通過Boost.Test或googletest完成。

要在CMake的項目使用基於如Boost.Test單元測試程序,你首先必須建立的CMake和鏈接單元測試二進制文件,在你的CMakeLists.txt腳本中使用add_executabletarget_link_libraries。然後,您可以將單元測試二進制文件添加到CTest測試列表中,以enable_testingadd_test運行。

如果你想獲得真正看中的,你可以看看通過CMake的文檔,如何你要通過所有源文件的CMake搜索自動查找和創建單元測試,但首先最重要的...

-2

請參閱CMake文檔/書中的CMake測試項目和/或CTest內容。

+0

這似乎是一個不同的測試框架,有沒有辦法使用Boost.Test? – forneo 2010-11-28 22:52:37

+0

正確答案是你應該使用CTest。如果你這樣做,那麼你將能夠「做測試」和/或使用ctest,有/無儀表板,來構建和運行你想要的任何程序。再次查看CMake文檔。 – 2010-11-28 23:00:18

10

我已經在https://github.com/rpavlik/cmake-modules/上製作了一些模塊,其中包括一些用於集成升壓測試的模塊 - 請參閱該回購的自述文件以獲取有關使用它們的最簡單方法的信息。

然後,你會想要做以下事情,假設test_DimensionedQuantities.cpp是一個boost.test測試驅動源。

include(BoostTestTargets) 
add_boost_test(DimensionedQuantities 
SOURCES 
test_DimensionedQuantities.cpp) 

這增加了只有一個CTest可見測試,如果任何升壓測試失敗失敗。如果你有一個可以由名稱指定的測試驅動程序(最簡單的宏屬於這一類)的測試中,你可以做這樣的事情:

include(BoostTestTargets) 
add_boost_test(DimensionedQuantities 
SOURCES 
test_DimensionedQuantities.cpp 
TESTS 
CheckCollision 
BodyPoseNotCorrupted 
CheckGraspTransform 
BodyFollowsMockManip1D 
BodyFollowsMockManip2D 
BodyFollowsMockManip3D) 

還有一堆更多的選擇,包括配置一個頭選擇UTF的最佳選項:包括UTF的版本,b:靜態鏈接或c:動態鏈接,以及鏈接庫等。只需查看cmake文件以獲取信息。

相關問題