import com.google.common.annotations.VisibleForTesting;
public class Sample {
@VisibleForTesting
String load() {
//Kürzung
}
}
Ein detailliertes Verwendungsbeispiel wird in Lassen Sie uns von der statischen Methode abbrechen, um einen Unit-Test # 1-Prinzip / Wrap-Methode zu schreiben erläutert.
Es kann als Markierung verwendet werden, um anzuzeigen, dass "die Sichtbarkeit für den Testcode erhöht wird". Die Annotation allein hat keine spezielle Funktion, sondern ist nur ein Marker (als Marker-Annotation bezeichnet).
In einem der statischen Analysetools SonarQube sind beispielsweise Mitglieder und Methoden mit "@ VisibleForTesting" fälschlicherweise falsch (außer Testcode). Es gibt eine Regel, um zu überprüfen, ob auf den Code einer anderen Klasse zugegriffen wird. Mit dieser Regel kann möglicherweise unbeabsichtigtes Verhalten frühzeitig erkannt werden.
Wie in JavaDoc angegeben, ist der Zugriffsbereich ursprünglich von ** privat auf den Standardwert (Paket) festgelegt. Wird für ** verwendet, um zu (privat) zu wechseln. Das Schreiben von Komponententests ist standardmäßig ausreichend, und das Wechseln zu öffentlich oder geschützt ist ein schlechtes Design.
Darüber hinaus kann mit dem VisibleForTesting-Plugin für SonarQube überprüft werden, ob ein falscher Zugriffsmodifikator hinzugefügt wurde.
Einige andere Bibliotheken und APIs haben ähnliche Anmerkungen.
Bibliothek / API | Vollqualifizierter Klassenname |
---|---|
AssertJ | org.assertj.core.util.VisibleForTesting |
Android | androidx.annotation.VisibleForTesting |
Apache Flink | org.apache.flink.annotation.VisibleForTesting |
Recommended Posts