Lee*_*ley 4 unit-testing cmake ctest
我有一个小但不平凡的项目,由于架构原因,它被构建为三个独立的项目,它们是相互依赖的,所以除非我特别专注,或者提高发现漏洞的测试覆盖率,否则这是有意义的我从项目根开始工作。
布局是这样的:
/CMakeLists.txt
/build/
/src/command-line-application/
/src/command-line-application/CMakeLists.txt
/src/command-line-application/build/
/src/command-line-application/src/
/src/command-line-application/tests/
/src/command-line-application/include/
/src/vlc-plugin/
/src/vlc-plugin/src/
/src/libmyproject/
/src/libmyproject/CMakeLists.txt
/src/libmyproject/build/
/src/libmyproject/src/
/src/libmyproject/tests/
/src/libmyproject/include/
/src/libmyotherproject/
/src/libmyotherproject/CMakeLists.txt
/src/libmyotherproject/build/
/src/libmyotherproject/src/
/src/libmyotherproject/tests/
/src/libmyotherproject/include/
Run Code Online (Sandbox Code Playgroud)
关于架构的一句话,libmyproject是我的应用程序的真正核心,它是这样构建的,因为 CLI 是将代码发送给最终用户的可怕方式,作为一个库,它也可以在 C# 和 Objective-C 应用程序中使用。(一切都按预期工作)
这libmyotherproject是一些特定于平台的支持代码,不直接连接到libmyproject,它有一些单元测试。
除了表明并非所有内容都有单元测试之外,这vlc-plugin在这里并不重要。/src/*/
我的工作流程通常是破解 CLI 应用程序,直到出现有用的东西,然后将其重构到库中,并确保它是可移植的。
当我工作时/src/*/build/,通常是跑步时cmake ../ && make && ctest --output-on-failure,一切正常。
/build当我在和 run中工作时cmake,各个组件是add_subdirectories()从 CMake 正确构建的(使用),但CTest没有递归地找到测试。
该文档对CTest您应该做的事情有点无帮助:
USAGE
ctest [options]
DESCRIPTION
The "ctest" executable is the CMake test driver program. CMake-generated build trees created for
projects that use the ENABLE_TESTING and ADD_TEST commands have testing support. This program will
run the tests and report results.
Run Code Online (Sandbox Code Playgroud)
ADD_TEST()自从这些电话存在于以来,我就预计/src/libmyotherproject/tests/CMakeLists.txt它们会被运行?(它们至少在我运行时被cmake编译/build/)
我希望我能够提供足够的信息,谢谢。
放
include(CTest)
Run Code Online (Sandbox Code Playgroud)
在进行任何 add_subdirectory 调用之前,在您的顶级 CMakeLists.txt 文件中。
这将为您调用enable_testing,并且如果您想在项目上运行ctest仪表板脚本以将结果发送到CDash服务器,还可以进行设置。
| 归档时间: |
|
| 查看次数: |
1192 次 |
| 最近记录: |