c++ - 使用升压测试和不应编译的测试的最佳实践

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

我正在寻找一种合理的方法来测试基于 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/

相关文章:

java - CMake 找不到 JNI

c++ - 使用按位运算符的加法

php - 测试私有(private)方法不起作用

c++ - 我能否将 "force"Cachegrind 分析成一个操作(或行)?

unit-testing - 暂停可取消协程取消的 Kotlin Mockk 测试

javascript - 单元测试 Jasmine 中的 Angular 服务方法

c++ - 如何解决 mac 中的 qt5(未找到软件包)cmake 错误?

c++ - cmake install(FILES ...) 似乎不起作用

c++ - 环礁和(long int)之间的区别?

c++ - 在 Qt OSE 项目中使用 Win32 API