使用boost测试和不应编译的测试的最佳实践

Best practice using boost test and tests that should not compile

本文关键字:测试 最佳 编译 boost 使用      更新时间:2023-10-16

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

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

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

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

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

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

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