2015-12-22 8 views
7

In IntelliJ IDEA 15.0.2 Wie kann ich triviale Getter und Setter (triviale Methoden) während der Testabdeckung ignorieren?IntelliJ IDEA: ignoriere triviale Methoden in der Codeabdeckung

// should be measure 
public void complex() { 
    fancy(); 
    interesting(); 
    dropDatabase(); 
} 

// should not be measured 
public int getNumber() { 
    return this.number; 
} 

Das Messen jeder Zeile würde 75% ergeben. Das Messen nur der obigen Methode würde 100% ergeben. Und das sind 100% des Codes, der zum Testen nützlich ist.

Wie kommt es dazu, dass ich im Internet nichts darüber finde? Tauche ich in eine schlechte Übung ein?


UPDATE

Dieser Code ist auch für die Prüfung geeignet:

// should also be tested as it contains logic 
public Integer getValidationProgress() { 
    if (validationProgress == null) { 
     validationProgress = 0; 
    } 
    return validationProgress; 
} 
+1

Codeabdeckung ist Codeabdeckung. Entweder Sie führen es oder Sie nicht. Ich kann nicht erkennen, dass es sinnvoll ist zu sagen, dass Sie eine 100% ige Abdeckung haben, wenn Sie nicht 100% des Codes abdecken. – JJF

+2

Trivial Getter und Setter werden automatisch generiert. Tests dafür zu schreiben ist eine Zeitverschwendung. Siehe auch http://StackOverflow.com/A/6197432/1309035 – michaelbahr

+0

Ich stimme mit Top-Kommentar auf Top-Antwort dort. Ich stimme auch zu, dass RE-Tests wie diese Zeitverschwendung sind. Allein zu sagen, 100% bedeutet 100%. 100% des wichtigen Codes ist eine andere Sache und wichtiger IMO. – JJF

Antwort

6

JetBrains mir gesagt, dass dies derzeit nicht möglich ist.

Andrey Dernov (IntelliJ) 6. Januar, 22:54

Hallo Michael,

Es gibt keine Einstellung eine bestimmte Methode zu ignorieren.

Ich habe eine issue dafür erstellt.

0

ein noch einfacheres Beispiel:

public abstract class A { 
    public static int add(int x, int y) { 
     return x + y; 
    } 
} 

Hier IntelliJ Berichterstattung beschwert sich über einen nicht getestet Konstruktor von A. würde ich etwas Dummes wie

new A() {}; 

in meinem Test schreiben zu bekommen es hat getestet. Wenn ich diesen Ansatz für eine Hilfsklasse verwenden

public final class A { 
    private A() {} 

    public static int add(int x, int y) { 
     return x + y; 
    } 
} 

Ich brauche Reflexion zu verwenden, um „test“ der leere Code:

final Class<?> clazz = Class.forName("package.name.of.A"); 
final Constructor<?> constructor = clazz.getDeclaredConstructors()[0]; 

constructor.setAccessible(true); 
constructor.newInstance(); 

, die nicht viel klüger aussieht.