In einem Projekt, ich habe eine Utility-Klasse, die wie folgt aussieht:Wie kann der Quellcode von der Coverage-Messung in IntelliJ IDEA ausgeschlossen werden?
public final class Util {
private Util() {}
public static String method1(InputStream in) {...}
public static String method2(BufferedReader in) {...}
public static String method3(File file) {...}
}
Die Klasse ist eine Utility-Klasse in dem Sinne, dass es nur static
Methoden enthält. Daher wird es final
erklärt und sein Konstruktor ist private
. Das Erstellen von Instanzen oder das Ableiten von Unterklassen würde einfach keinen Sinn ergeben.
Ich habe eine Reihe von Komponententests, die das Projekt testet. Ich verwende IntelliJ IDEA, um die Tests auszuführen, messen und visualisieren die Code-Abdeckung. Der Konstruktor des Dienstprogramms class Util
reduziert jetzt die Abdeckung. Ich möchte eine 100% auf 100% logische Abdeckung sehen. Code wie der private Konstruktor der Utility-Klasse reduziert die Abdeckung.
Gibt es eine Möglichkeit, vorzugsweise durch eine Annotation, eine Methode oder einen Konstruktor als nicht relevant für die Codeabdeckung zu markieren, um diesen Code aus den Coverage Reports auszuschließen und damit eine 100% ige Abdeckung anzuzeigen?
Ich weiß, dass im Allgemeinen verstecken Code aus dem Coverage-Bericht zu Ihrem eigenen Nachteil liegt. Es würde mir nichts ausmachen, wenn der Bericht eine Liste von "ignorierten Items" hätte - eigentlich wäre das gut, um zu überprüfen, ob jemand Dinge ignoriert, die nicht ignoriert werden sollten. Der Punkt ist wirklich über Code, für den Abdeckung keinen Sinn macht, wie der private Konstruktor einer Utility-Klasse.
Ich habe versucht zu finden, ob annotations.jar
einen Kandidaten enthält. Die einzige Anmerkung, die sogar entfernt aussah, als ob sie es könnte, war TestOnly
, aber sie erfüllt diesen Zweck nicht. Ich guckte auch in plugins/coverage/lib/*.jar
und konnte keinen Kandidaten finden, aber vielleicht habe ich es gerade verpasst?
Sie erscheinen den Deckungsbericht falsch interpretieren. Code, der nicht abgedeckt ist, könnte so interpretiert werden, dass er mehr Tests benötigt, oder er könnte als Hinweis auf einen Code-Geruch betrachtet werden. In diesem Fall ist es ein Geruch - du solltest wirklich Gebrauchsklassen wie diese vermeiden, es ist mehr als wahrscheinlich ein Artefakt schlechtem Design und du solltest versuchen, das zu beheben, anstatt deinen Deckungsbericht zu spielen. Gaming-Berichte wie diese sind eines der größten Probleme mit Metrik-Programmen, und wenn Sie in meinem Team wären, würden wir darüber reden, was Sie gerade tun. –
Für jemanden, der nicht den richtigen Code in Frage kennt, denke ich, dass Sie ziemlich starke und dogmatische Sprache verwenden. Ich stimme zu, dass Hilfsklassen ein Geruch sein können und Menschen davor gewarnt werden sollten. Aber nur weil etwas oft schlecht ist, heißt das nicht, dass es immer schlecht ist. Wie auch immer, mit "enum", wie es Peter Lawrey vorgeschlagen hat. Und es macht absolut Sinn, da dies eine Klasse mit einer vordefinierten (leeren) Menge von Instanzen ist und die Berichterstattung jetzt glücklich ist. P.S .: Gerne, wenn Sie in Ihrem Team sprechen. Ich würde mich nicht länger einsam fühlen, wenn ich Clean Code predige. –