2010-08-20 8 views
5

Ist es möglich, Cowertura zu verwenden, um bestimmte Codeteile zu ignorieren, die durch Start- und Endkommentare identifiziert werden?Cobertura so konfigurieren, dass bestimmte Codeblöcke ignoriert werden

Zum Beispiel

public class Foo { 

    public void static doSomething() { 
     ... 
     // Cobertura-Ignore-Start 
     ... 
     // Cobertura-Ignore-End 
} 

würde in Cobertura den Code zwischen dem Start nicht inklusive und Kommentare beenden, wenn Abdeckungsstatistiken zu berechnen.

Bearbeiten: Ich verwende die Cobertura Ant Aufgabe.

+0

warum möchten Sie das tun? –

+0

Viele Gründe, aber ich werde ein Beispiel geben. Nehmen wir an, Sie haben eine Testklasse und der Code sieht so aus: public void testSomething() {try {doSomething(); Scheitern(); } catch (Exception e) {// check exception}} - also testet das im Wesentlichen, dass doSomething() eine Ausnahme auslöst, aber fail(); wird niemals aufgerufen, es sei denn, Ihr Test ist tatsächlich defekt. Wenn Sie also eine 100% ige Testabdeckung wünschen und alle Ihre Tests so verlaufen, wie sie sollten, enthält die Zeile fail(); müsste als eine Zeile gekennzeichnet werden, die nicht von cobertura überprüft werden sollte. Hoffentlich hat das einen Sinn ergeben. – digiarnie

+0

Wie wird es nicht gelingen aufgerufen zu werden, wirkt sich auf Ihre Codeabdeckung aus ... da dies Teil der Testklasse ist ... –

Antwort

5

Nein, das ist nicht möglich. Cobertura hat keine Funktion, mit der Code übersprungen werden kann. Das einzige, was Sie ignorieren können, sind Methodenaufrufe zu bestimmten Paketen und/oder Klassen.

Sie müssten wahrscheinlich in den Code eintauchen und sehen, ob es möglich ist, es so zu erweitern, dass Blöcke ignoriert werden.

0

Sie können auf der Klassenebene nur so weit ich weiß ignorieren (was bedeutet, dass jede Methode aus den ignorierten Klassen nicht gezählt wird, es ist aber instrumentiert, also beschleunigen Sie damit nicht).