我正在尝试执行共享库的覆盖率测试。我选择 gcov/lcov 是因为它是免费和开源的,这意味着我可以立即试用(商业软件需要获得批准/购买,必须做出很多决定 - 它费时间)。
情况如下 - 库 - 我们的产品,用 Fortran 编写,然后用于仿真软件(具体来说,来自 MSC.Software 的 ADAMS)。我可以使用 -fprofile-arcs -ftest-coverage 编译库,如果被 ADAMS 使用,它可以正常工作。但是,不会创建任何 .gcda 文件。
有一个小的测试可执行文件来测试库的基本行为(方法的小子集)。如果我使用覆盖测试开关编译这个可执行文件,我会得到可执行文件本身和库的 .gcda 文件。
问题是:如果使用该库的可执行文件未使用覆盖测试开关进行编译,是否可以为该库调用 gcov 测量?如果可以,如何进行?
可以编写大量测试,但这几乎就像复制 ADAMS(或任何其他模拟包)一样。还是我选择了错误的覆盖率测试工具,我应该转向商业产品?
提前致谢。
迈克
最佳答案
看来,专有软件调用的库的代码覆盖率测试没有任何问题。只需要注意使用相同版本的编译器编译所有组件并使用相应的 gcov 版本。 在我的例子中,库(在 Fortran 中)是用 f77 (gcc-3.4.6) 编译的,它的组件是用最新的 gcc (gcc-4.4) 编译的。 ADAMS 使用的库的包装器是用 gcc-3.4.6 再次编译的,使用的 gcov 是 4.1。
对所有组件使用 gcc-3.4.6 提供了非常吸引人的代码覆盖率测试结果。
认为该主题已关闭,但如果有人有任何疑问,请提问。我很乐意分享我的经验。
关于testing - 使用 gcov [Linux/Fortran] 进行共享库覆盖率测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5144603/