Ich wollte Sie fragen, ob Sie irgendwelche Techniken haben, um Try-with-Resource mit Komponententests abzudecken. Ich benutze es, um einige Streams zu öffnen und eclecma zeigt mir, dass ich Zweige in diesem Try-with-Resource Block gefunden habe. Ich verstehe, dass dieser Block nach der Kompilation anscheinend in etwas anderes übersetzt wird, aber bedeutet das, dass ich nicht 100% ige Abdeckung mit Emma haben kann, wenn ich das nutze? Haben Sie irgendwelche Techniken, um mit diesem Problem umzugehen? Ich mag meine Berichterstattung 100%.
Danke!
Die kurze Antwort ist nein.
Lange Antwort: Wie hier beschrieben: 8 Filialen für den Versuch mit Ressourcen - Jacaco Abdeckung möglich ? Eine Try-with-Resource wird in eine sehr komplizierte Gruppe von Anweisungen kompiliert, in der einige Verzweigungen wahrscheinlich nicht für jeden erreichbar sind.
Ab sofort (Oktober 2014) Jacoco (eclemma) filtert diese nicht erreichbaren Zweige für Sie nicht, aber es gibt ein Ticket < Ich weiß nicht, ob oder wann es jemals umgesetzt wird.
Während 100% Codeabdeckung gut ist, ist es keine gute Metrik, blindlings zu folgen. 100% ige Codeabdeckung sagt nichts anderes als Tests aus, die alle Codezeilen ausführen. Ihr Code kann immer noch Fehler enthalten, wenn dieser abgedeckte Code das falsche tut oder nicht genug tut. Im Laufe der Jahre habe ich viele Bugs in Codebereichen gefunden, die zu 100% abgedeckt waren, da ich zwar Tests für alle Anweisungen durchgeführt hatte, aber nicht alle Randfälle berücksichtigt habe, sodass mein Code in seltenen Fällen fehlerhaft war.
Auch wenn Ihr Projekt groß genug ist, werden diese verpassten Filialen kaum einen Unterschied machen. Was ist, wenn Sie nur 99% Abdeckung haben?
Tags und Links java unit-testing