2017-03-17 2 views
1

Ich benutze googletest in Verbindung mit gcovr, die etwas seltsames Verhalten produziert. Ich habe eine Header-Datei foo.h, die gcovr Ansprüche hat einige Zeilen, die nicht unter einem Test abgedeckt sind. Diese Linien sind die Klassendefinition und der Umzug Konstruktor:googeltest move constructor coverage

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

Wo Linie 39:

class foo 

und Linie 47 ist:

foo(foo&&) = default; 

Ich habe ausdrücklich versucht Aufruf dieser Funktion in ein Testkörper mit std::move(), vergeblich. Gibt es eine Lösung für dieses Problem, oder stehe ich mit einem 99% Abdeckungsbericht fest?

Ich sollte beachten, es gibt keine Implementierung in diesem Header abgesehen von der Klassendefinition und der Kopie/Umzug Semantik (die alle als default definiert sind); Alle Funktionskörper sind in foo.cpp.

+0

Haben Sie einen solchen Testcode ausprobiert: 'Foo foo1; Foo foo2 (std :: move (foo1)); '? – PiotrNycz

+0

@PiotrNycz Ja, ich habe versucht, das explizit in einem Testfall aufzurufen –

Antwort

0

Es scheint, dass die einzige Möglichkeit, diese Zeilen aus dem Coverage-Bericht als "ungedeckt" zu entfernen, ist, sie aus dem Header zu entfernen. Dies beeinflusst nichts wirklich, da sie nur copy/move/dtor auf default setzen. Überall dort, wo diese tatsächlich implementiert oder gelöscht werden, wird dies nicht im Coverage-Report angezeigt.

Verwandte Themen