2017-02-03 4 views
0

코드에 대해 약 8 단위 테스트를 작성했으며 그 중 일부는 gcov 적용 범위가 단위 테스트 적용 범위와 일치합니다 (모든 블록이 실행되었음을 보여주는 등) . 나머지, gcov는은 다음과 같습니다gcov는 0 커버리지를 산출하지만 단위 테스트는 잘 실행됩니다.

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는 달리 지시 . 누구든지 내가 뭘 잘못하고 있는지 생각해? 감사합니다.

답변

0

문제를 좀더 자세하게 설명하려면 다른 사람이 같은 문제를 겪는 경우 단위 테스트를 실행하고 단위 테스트가 잘되고 모든 것이 잘 컴파일 된 것처럼 보였지만 어떻게 든 0 커버리지를 얻고있었습니다.

제 메이크 파일이 재미있는 일을하는 것으로 나타났습니다.

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 

나는이에 대한 첫 번째 라인과 그 고정 모든 것을 변화 결국 :이처럼 보였다 내 메이크에서이 블록을했다. 동일한 단위 테스트를 사용하면 다음과 같이 적용됩니다.

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