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

标签 testing fortran code-coverage gcov

我正在尝试执行共享库的覆盖率测试。我选择 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/

相关文章:

ios - 在物理设备上测试我的应用程序(使用 swift)时崩溃,线程 1 : EXC_BREAKPOINT (code=1, 子代码 = 0x120021088)

testing - 如何将 TestRail 与 Jenkins 集成?

c# - 系统测试与验收测试 - 测试用例的差异

c - 我怎样才能找出哪个图书馆是给定对象的所在地?

c++ - gfortran makefile 问题

.net - 即使执行了测试,测试覆盖率也为 0% (Opencover/xUnit)

testing - 你会如何测试鼠标?描述尽可能多的测试用例?

data-structures - 如何在 fortran 2003-2008 中实现链表

python - python中的条件覆盖

objective-c - 如何确定 Objective-C 程序的代码覆盖率?