【发布时间】:2021-06-26 13:16:02
【问题描述】:
我已经学会了如何将 ctest 与 add_test("base64 conversion" utils.exe) 一起使用,例如 我想知道是否有一种通用模式可以使用相同的可执行文件执行多个测试。 我有一个 util 组件可以做很多事情,例如 base64 编码、base64 解码、base85 编码、base85 解码、自己的计时器测试。所以类是 Base64, Base85, Timer, ...
add_test(base64_encoding utils base64_encoding)
add_test(base64_decoding utils base64_decoding)
add_test(base85_encoding utils base85_encoding)
add_test(base85_decoding utils base85_decoding)
add_test(timer_create utils timer_create)
add_test(timer_set_timeout utils timer_set_timeout)
这是一种传入要作为 args 执行的测试名称的方法,在 utils.exe 中我可以获取 argv[1] 并执行字符串比较以了解要运行的测试。它看起来有点难看,每个测试创建一个可执行目标似乎也很难看,因为我的 utils 中有太多类,每个家庭都有 100 个单元测试。 请问有什么神奇的方法来组织这一切吗? 非常感谢
【问题讨论】:
-
CTest 仅提供运行可执行文件和检查退出代码的功能。这个可执行文件的作用完全取决于您。我建议使用一些结合 CTest 的单元测试框架。在工作中,我们为产品的每个组件使用 1 个 cmake 测试用例,对于单元测试,所有这些测试都使用 boost 单元测试框架来运行多个独立的单元测试并将结果存储在 JUnit xml 文件中。
-
Google 测试可能值得一试。