使用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/

关于架构,libmyproject是我的应用程序的真正肉,它是这样构建的,因为CLI是一种向最终用户发送代码的可怕方式,作为一个库,它也用于c#和Objective-C应用程序。(和所有工作如预期)

libmyotherproject是一些平台特定的支持代码,不直接连接到libmyproject,它有几个单元测试。

vlc-plugin在这里并不重要,除了显示/src/*/中的并非所有内容都有单元测试。

我的工作流程通常是破解CLI应用程序,直到出现有用的东西,然后将其重构到库中,并确保它是可移植的。

当我在/src/*/build/中工作时,通常运行cmake ../ && make && ctest --output-on-failure,一切正常。

当我在/build中工作并运行cmake时,各个组件从CMake正确构建(使用add_subdirectories()),但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.

我本以为ADD_TEST()调用生活在/src/libmyotherproject/tests/CMakeLists.txt,他们会运行吗?(当我从/build/运行cmake时,它们至少是编译的)

我希望我能提供足够的信息,谢谢。

Put

include(CTest)

在你的顶级CMakeLists.txt文件之前,你做任何add_subdirectory调用。

这将为您调用enable_testing,并且如果您想在项目上运行ctest仪表板脚本以将结果发送到CDash服务器,也可以设置。

相关内容

  • 没有找到相关文章

最新更新