【问题标题】:gcov yields 0 coverage but unit tests run just finegcov 产生 0 覆盖率,但单元测试运行良好
【发布时间】:2017-02-03 19:44:50
【问题描述】:

我为一个代码编写了大约 8 个单元测试,其中一些,gcov 覆盖率与单元测试覆盖率一致(表明所有块都已执行,等等)。其余的 gcov 看起来像这样:

function XXX called 0 returned 0% blocks executed 0%

但我的单元测试看起来是这样的:

Lines executed:80.00% of 10
Branches executed:100.00% of 8
Taken at least once:75.00% of 8
No calls

我很困惑,因为它显示函数中的某些行已执行,但 gcov 告诉我否则。有谁知道我做错了什么? 谢谢!

【问题讨论】:

    标签: c gcov


    【解决方案1】:

    为了更详细地描述问题,以防其他人遇到同样的问题,我正在运行单元测试,我知道单元测试很好,一切似乎都编译得很好,但不知何故我是获得 0 覆盖率。

    事实证明,我的 makefile 正在做一些有趣的事情。我的 makefile 中有这个块,看起来像这样:

    unittestresults.out: 
        gcc -fprofile-arcs -ftest-coverage -Wall -lm -std=c99 -o unittest1 -g unittest1.c dominion.o rngs.o
        gcc -fprofile-arcs -ftest-coverage -Wall -lm -std=c99 -o unittest2 -g unittest2.c dominion.o rngs.o
        gcc -fprofile-arcs -ftest-coverage -Wall -lm -std=c99 -o unittest3 -g unittest3.c dominion.o rngs.o
        gcc -fprofile-arcs -ftest-coverage -Wall -lm -std=c99 -o unittest4 -g unittest4.c dominion.o rngs.o
        gcc -fprofile-arcs -ftest-coverage -Wall -lm -std=c99 -o cardtest1 -g cardtest1.c dominion.o rngs.o
        gcc -fprofile-arcs -ftest-coverage -Wall -lm -std=c99 -o cardtest2 -g cardtest2.c dominion.o rngs.o
        gcc -fprofile-arcs -ftest-coverage -Wall -lm -std=c99 -o cardtest3 -g cardtest3.c dominion.o rngs.o
        gcc -fprofile-arcs -ftest-coverage -Wall -lm -std=c99 -o cardtest4 -g cardtest4.c dominion.o rngs.o
        ./unittest1 &> unittestresult.out
        ./unittest2 >> unittestresult.out
        ./unittest3 >> unittestresult.out
        ./unittest4 >> unittestresult.out
        ./cardtest1 >> unittestresult.out
        ./cardtest2 >> unittestresult.out
        ./cardtest3 >> unittestresult.out
        ./cardtest4 >> unittestresult.out
        gcov -b dominion.c >> unittestresult.out
        cat dominion.c.gcov >> unittestresult.out
    

    我最终将第一行更改为 this 并且修复了所有内容。使用相同的单元测试,我现在得到了覆盖:

    unittestresults.out: unittest1.c unittest2.c unittest3.c unittest4.c cardtest1.c cardtest2.c cardtest3.c cardtest4.c dominion.o rngs.o
    

    【讨论】:

      猜你喜欢
      • 2015-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-18
      • 1970-01-01
      • 2011-07-05
      • 1970-01-01
      • 2022-07-01
      相关资源
      最近更新 更多