Testing 使用gcov[Linux/Fortran]进行共享库覆盖率测试

Testing 使用gcov[Linux/Fortran]进行共享库覆盖率测试,testing,fortran,code-coverage,gcov,Testing,Fortran,Code Coverage,Gcov,我正在尝试对共享库执行覆盖率测试。我之所以选择gcov/lcov,是因为它是免费的、开源的,这意味着我可以立即试用(商业软件需要批准/购买,需要做出很多决定——这需要时间) 情况如下-库-我们的产品,用Fortran编写,然后用于仿真软件(具体来说,来自MSC.software的ADAMS)。我可以用-fprofile arcs-ftest覆盖率编译库,如果由ADAMS使用,它可以正常工作。但是,不会创建.gcda文件 有一个小的测试可执行文件来测试库的基本行为(方法的小子集)。如果我使用cov

我正在尝试对共享库执行覆盖率测试。我之所以选择gcov/lcov,是因为它是免费的、开源的,这意味着我可以立即试用(商业软件需要批准/购买,需要做出很多决定——这需要时间)

情况如下-库-我们的产品,用Fortran编写,然后用于仿真软件(具体来说,来自MSC.software的ADAMS)。我可以用-fprofile arcs-ftest覆盖率编译库,如果由ADAMS使用,它可以正常工作。但是,不会创建.gcda文件

有一个小的测试可执行文件来测试库的基本行为(方法的小子集)。如果我使用coverage tests开关编译这个可执行文件,我将获得可执行文件本身和库的.gcda文件

问题是:如果使用库的可执行文件未使用覆盖率测试开关编译,是否可以调用库的gcov度量?如果可以,如何调用

编写广泛的测试是可能的,但它几乎就像复制ADAMS(或任何其他模拟软件包)。还是我选择了错误的覆盖率测试工具,应该转向商业产品

先谢谢你


Mike编译程序的方法通常是为所有模块的编译器提供完全相同的开关,因此,不,我不知道在未使用覆盖开关编译可执行文件时是否可以让gcov工作


然而,我接下来要做的是对gcov的输出文件进行后处理,只忽略与测试代码相关的文件,但保留与测试代码直接调用的代码相关的所有文件,以及由自身调用的库代码。

,专有软件调用的库的代码覆盖率测试没有任何问题。应该只注意使用相同版本的编译器编译所有组件,并使用相应的gcov版本。 在我的例子中,库(Fortran)是用f77(gcc-3.4.6)编译的,它的组件是用最新的gcc(gcc-4.4)编译的。ADAMS使用的库的包装器使用gcc-3.4.6再次编译,使用的gcov为4.1

对所有组件使用gcc-3.4.6提供了非常吸引人的代码覆盖率测试结果


假设主题已结束,但如果有人有问题,请提问。我很乐意分享我的经验。

谢谢你的回答。这是我通常会做的,但是在这里,库的测试是特殊的输入数据集,它被输入到ADAMS中,并将输出与预期结果进行比较。代码覆盖率应该是找到任何“死代码”,不再使用代码,并且不检查单元测试的质量。如果没有其他解决方案,我们只需要实现广泛的单元测试。我希望我可以通过使用gcov来避免它。你好,迈克