2016-05-19 9 views
-2

mit mir einen Java-enum Code wieZustand Abdeckung in foreach-Schleife über eine Werte eines Aufzählungs

for (TestEnum testEnum : values()) { 
    //do manything 
} 

Wo in der foreach-Schleife wird die Berichterstattung Bericht 1 conditions are covered by test sagen. Ich konnte nicht verstehen, was Zustand es in dieser For-Each-Schleife eincheckt, wobei die values() eine enum-Funktion ist, die immer Werte für diese enum zurückgibt. Kann jemand herausfinden, warum ich so einen Bericht bekomme?

Der Code innerhalb von for-each bietet 100% Abdeckung.

+0

Sie sollten einen Schalter oder eine if-Bedingung auf dem TestEnum tun, um zu sehen, welcher Wert es ist, und in diesem Fall etwas Bestimmtes tun –

+0

Warum down votes? –

Antwort

1

A für jede Schleife auf einem Iterable oder auf einem Array ist syntaktischer Zucker für eine for-Schleife auf einem Iterator dieses iterable oder die Größe dieses Arrays.

Die unbedeckte Bedingung in Ihren Fällen ist höchstwahrscheinlich, wenn dieses Iterable/Array leer ist. Beachten Sie, dass Sie es nicht testen können, während Sie mit einer Enumeration arbeiten (die definitionsgemäß einige Werte hat).

+0

Es könnte also ein Fehler mit Coverage-Tools richtig –

+0

sein, es ist kein Fehler mit Coverage-Tool, sondern die Tatsache, dass die Coverage-Tools auf Bytecode-Ebene und nicht auf Source-Ebene funktioniert. Und das Coverage-Tool ist richtig: Sie decken den Zweig hier nicht ab, er hat keine Ahnung, dass Sie an etwas arbeiten, das nicht leer sein kann. – benzonico

+0

Kennt jemand einen Weg, wo wir diese Schleife kommentieren können, um JaCoCo anzuweisen, diese Schleifenbedingung zu ignorieren? – theINtoy

Verwandte Themen