我正在寻找一种合理的方法来测试基于 C++ 模板的软件,我想在其中检查模板参数。如果参数不符合某些标准,我希望编译器发出错误。到目前为止一切顺利...
现在我想测试无效的模板参数是否确实被编译器撤销了。我可以设置一个单一的测试场景并在构建系统 (cmake) 中摆弄一些东西来尝试编译场景,但这听起来很痛苦。我想我不是第一个试图解决这个问题的人。大约 10 年前,我使用了一种方法,我使用单个文件进行多个测试,并使用预处理器启用单个测试。但这也不是很优雅。
关于如何解决这个问题的任何建议(最好在我当前的工具集中:c++、cmake、boost-test、bash、python)?
最佳答案
CMake 的 try_compile
听起来像是完成这项工作的合理工具。
这里的主要问题是 try_compile
将在 CMake 配置时运行,这不是进行测试的最佳时间。因此,我建议将测试的编译分离到它自己的 CMake 项目中。
然后,外部 CMake 项目将像以前一样构建您的代码,并包含一个在测试项目上运行 CMake 的自定义构建目标。这样您甚至应该能够将编译时测试包含到您的 CTest 套件中。
我实际上并没有用 CMake 实现这样的东西,所以我不能保证它真的会按预期工作,更不用说它是最好的方法了。但如果我必须编写这样一个系统,我可能会这样开始。
关于c++ - 使用升压测试和不应编译的测试的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28564472/