for*_*neo 15 c++ boost 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 ;
Run Code Online (Sandbox Code Playgroud)
Ben*_*rel 15
CMake本身只是一个构建系统; CTest是一个与CMake集成的测试运行器.也不是单元测试框架; 这项工作可以通过如Boost.Test或googletest来完成.
要在CMake的项目使用基于如Boost.Test单元测试程序,你首先必须建立的CMake和链接单元测试二进制文件,使用add_executable和target_link_libraries在你的CMakeLists.txt脚本.然后,您可以将单元测试二进制文件添加到CTest的测试列表中以使用enable_testing和运行add_test.
如果你想变得非常花哨,可以查看CMake文档,了解如何让CMake搜索所有源文件以自动查找和构建单元测试,但首先要做的事情......
Rya*_*lik 11
我在https://github.com/rpavlik/cmake-modules/上制作了一些模块,包括一些用于集成boost测试的模块- 请参阅该repo中的自述文件,了解最简单的使用方法.
然后,假设test_DimensionedQuantities.cpp是一个boost.test测试驱动程序源,您需要执行以下操作.
include(BoostTestTargets)
add_boost_test(DimensionedQuantities
SOURCES
test_DimensionedQuantities.cpp)
Run Code Online (Sandbox Code Playgroud)
如果任何增强测试失败,这只会增加一个CTest可见测试失败.如果您有可以通过名称指定给测试驱动程序的测试(最简单的宏属于此类别),您可以执行以下操作:
include(BoostTestTargets)
add_boost_test(DimensionedQuantities
SOURCES
test_DimensionedQuantities.cpp
TESTS
CheckCollision
BodyPoseNotCorrupted
CheckGraspTransform
BodyFollowsMockManip1D
BodyFollowsMockManip2D
BodyFollowsMockManip3D)
Run Code Online (Sandbox Code Playgroud)
还有更多选项,包括配置标头以选择最佳选项:包含的UTF版本,b:静态链接,或c:动态链接,以及链接库等.只需查看cmake文件信息.
| 归档时间: |
|
| 查看次数: |
8283 次 |
| 最近记录: |