我正在编写一个中等规模的科学代码,我负责为其添加全面的测试。我的 googletest 运行良好,但遇到了一些问题。
- 该代码通过 ifdef 语句大量使用条件编译。有什么方法可以一次测试整个代码,还是我只需要使用一组定义进行编译、测试该组、使用另一组编译、测试等?
- 我试图找出一种计算代码覆盖率的好方法。每个人似乎都建议我使用 gcov/lcov,但他们并没有给我有用的结果。他们要么似乎告诉我包括导入库(如 STL)在内的覆盖率,要么只是告诉我测试本身运行,而不是正在测试的任何内容。他们也只是显示了被测试代码的代码覆盖率,而不是我没有测试的代码。并且它表明它正在测试许多功能,而它应该只测试一个功能。即,对于单个函数,我得到的结果类似于“覆盖 8/8 行,覆盖 14/14 个函数”。
我不致力于 gcov,如果有人有更好的主意,我愿意切换。GoogleTest 我相当投入,因为它具有我们需要的一些其他测试框架似乎没有的功能;即死亡测试和线程安全。
这一切有意义吗?我真的很想以一种优雅的方式解决这个问题。