inf*_*guy 13 unit-testing cmake
我看到要添加我的google测试(对于我的cpp项目),我需要在根源目录中调用enable_testing().有人可以解释这是真的吗?另外为什么cmake不会使这个默认?
这是我从文档中可以得到的全部内容.
启用此目录及以下的测试.另请参见add_test()命令.请注意,ctest期望在构建目录根目录中找到测试文件.因此,此命令应位于源目录根目录中.
它在生成器中设置了一个定义CMAKE_TESTING_ENABLED,如果没有定义,它允许cmake跳过很多与ctest注册单元测试相关的额外处理.(例)
这样做的主要好处是,它允许您在调用cmake时有选择地启用/禁用构建文件中的测试生成.
例如,您可以将以下代码段放在根目录中CMakeLists.txt file:
它创建了一个启用测试的选项,默认情况下是关闭的.
option(ENABLE_TESTS "Enable tests" OFF)
if (${ENABLE_TESTS})
enable_testing()
endif()
Run Code Online (Sandbox Code Playgroud)
您只需要在您的根目录中执行此操作,CMakeLists.txt您可以愉快地调用其他cmake文件add_test()等,而无需担心if (${ENABLE_TESTS})每次都检查
当你打电话时add_test(...),除非enable_testing()被叫,否则CMake不会生成测试.请注意,您通常不需要直接调用它.只是include(CTest)它会为你调用它.
我的CMake设置通常如下所示:
include(CTest) # note: this adds a BUILD_TESTING which defaults to ON
# ...
if(BUILD_TESTING)
add_subdirectory(tests)
endif()
Run Code Online (Sandbox Code Playgroud)
在tests目录中:
# setup test dependencies
# googletest has some code they explain on how to set it up; put that here
add_executable(MyUnitTests
# ...
)
target_link_libraries(MyUnitTests gtest_main)
add_test(MyUnitTestName MyUnitTests)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5870 次 |
| 最近记录: |