2017-03-17 3 views
1

과 함께 googletest을 사용 중입니다. 일부 이상한 동작이 발생합니다. 나는 이라는 헤더 파일에 gcovr 클레임에 테스트에서 다루지 않는 일부 줄이 있다는 것을 알고 있습니다.googletest 이동 생성자 적용 범위

class foo 

라인 47은 다음과 같습니다 :

File Lines Exec Cover Missing 
foo.h 42 40 95% 39,47 

라인 (39)은 다음과 같습니다

foo(foo&&) = default; 

내가 명시 적으로이 함수에서 호출 시도 한이 라인은 클래스 정의 및 이동 생성자입니다 std::move()의 테스트 본문은 아무 소용이 없습니다. 이 문제에 대한 해결책이 있습니까, 아니면 99 % 적용 범위 보고서가 붙어 있습니까?

클래스 정의 및 복사/이동 의미 (이 모두는 default으로 정의 됨)를 제외하고이 헤더에는 구현이 없습니다. 모든 함수 본문은 foo.cpp에 있습니다.

+0

테스트 코드를 사용해 보셨습니까? 'Foo foo1; Foo foo2 (std :: move (foo1));'? – PiotrNycz

+0

@PiotrNycz 예, 테스트 케이스에서 명시 적으로 호출 해 보았습니다. –

답변

0

이러한 라인을 커버리지 보고서에서 "발견되지 않은"것으로 제거하는 유일한 방법은 헤더에서 제거하는 것입니다. 이것은 복사/이동/dtor를 default으로 설정하기 때문에 아무런 영향을주지 않습니다. 이들이 실제로 구현되거나 삭제 된 다른 곳은 커버리지 리포트에 나타나지 않습니다.