首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gcov的覆盖率为0,但是单元测试运行得很好

gcov的覆盖率为0,但是单元测试运行得很好
EN

Stack Overflow用户
提问于 2017-02-04 03:44:51
回答 1查看 598关注 0票数 0

我为一个代码编写了大约8个单元测试,对于其中一些代码,gcov覆盖率与单元测试覆盖率是一致的(显示所有块都已执行,等等)。对于其余部分,gcov如下所示:

代码语言:javascript
复制
function XXX called 0 returned 0% blocks executed 0%

但是我的单元测试是这样的:

代码语言:javascript
复制
Lines executed:80.00% of 10
Branches executed:100.00% of 8
Taken at least once:75.00% of 8
No calls

我很困惑,因为它显示函数中的一些行被执行了,但gcov告诉我不是这样。有谁知道我做错了什么吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-05 11:54:55

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

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

代码语言:javascript
复制
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

我最后把第一行改成了这个,这样就解决了所有问题。使用相同的单元测试,我现在得到了覆盖率:

代码语言:javascript
复制
unittestresults.out: unittest1.c unittest2.c unittest3.c unittest4.c cardtest1.c cardtest2.c cardtest3.c cardtest4.c dominion.o rngs.o
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42031899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档