【问题标题】:Best practice using boost test and tests that should not compile使用 boost 测试和不应编译的测试的最佳实践
【发布时间】:2015-02-17 15:05:15
【问题描述】:

我正在寻找一种合理的方法来测试基于 C++ 模板的软件,我想在其中检查模板参数。如果参数不符合某些标准,我希望编译器发出错误。到目前为止一切顺利...

现在我想测试一下无效的模板参数确实被编译器撤销了。我可以设置一个测试场景并在构建系统(cmake)中尝试编译场景,但这听起来很痛苦。我想我不是第一个试图解决这个问题的人。大约 10 年前,我使用了一种方法,我使用单个文件进行多个测试,并使用预处理器启用单个测试。但这也不是很优雅。

关于如何解决这个问题的任何建议(最好在我当前的工具集中:c++、cmake、boost-test、bash、python)?

【问题讨论】:

    标签: c++ unit-testing cmake boost-test


    【解决方案1】:

    CMake 的 try_compile 听起来是一个合理的工具。

    这里的主要问题是try_compile 将在 CMake 配置时运行,这不是进行测试的最佳时间。因此,我建议将测试的编译分离到它自己的 CMake 项目中。

    然后,外部 CMake 项目将像以前一样构建您的代码,并包含一个在测试项目上运行 CMake 的自定义构建目标。这样,您甚至应该能够将编译时测试包含到您的 CTest 套件中。

    我实际上并没有用 CMake 实现类似的东西,所以我不能保证它会真正按预期工作,更不用说它是最好的方法了。但如果我必须编写这样一个系统,我可能会这样开始。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-29
      • 2020-02-05
      • 2012-05-08
      • 1970-01-01
      • 1970-01-01
      • 2011-06-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多