Was ist der Zweck der @SmallTest, @MediumTest und @LargeTest Annotationen in Android?
-
10-10-2019 - |
Frage
Ich bin neu in Android und ich habe Beispiel-Code mit diesen Anmerkungen zu sehen. Zum Beispiel:
@SmallTest
public void testStuff() {
TouchUtils.tapView(this, anEditTextView);
sendKeys("H E L P SPACE M E PERIOD");
assertEquals("help me.", anEditTextView.getText().toString());
}
Was bedeutet, dass die Annotation erreichen?
Lösung
Dieser Blog-Eintrag es am besten erklärt. Grundsätzlich ist es folgendes:
- Kleinformat:. Dieser Test nicht interact mit jedem Dateisystem oder Netzwerk
- Medium:. Greift Dateisysteme auf Box, die Tests ausgeführt
- Groß:. Greift externe Dateisysteme, Netzwerke, usw.
Per Android Developers Blog , ein kleiner Test nehmen <100ms sollte ein Medium Test <2s, und ein großer Test <120s.
Siehe Seite (Suche nach "@SmallTest") auf wie Sie angeben, welche Tests durchführen lassen.
Andere Tipps
Als Ergänzung zu Davidann Antwort und vor allem Frage der OP im Kommentar:
Im Zusammenhang mit dem obigen Code, sieht es eigentlich DO nichts außer eine Nachricht hinterlassen für andere Entwickler? Hat es etwas erzwingen? Gibt es irgendwelche Tools, die diese Anmerkung nutzt? Was ist es der Zweck in Android Entwicklung?
Sie können eine Gruppe von Tests mit bestimmten Anmerkung kommentierten auszuführen.
AndroidJUnitRunner Dokumentation :
Ausführen eine spezifische Testgröße d kommentiert mit SmallTest oder MediumTest oder LargeTest :
adb shell am Instrument -w -e Größe [small | medium | large] com.android.foo/android.support.test.runner.AndroidJUnitRunner
Sie können auch Setup diese params durch gradle:
android {
...
defaultConfig {
...
testInstrumentationRunnerArgument 'size', 'Large'
}
}
Siehe diese Blog-Post für weitere Details.
Sie kann auch mit Anmerkungen versehen POJO Unit-Tests mit @Category(MediumTest.class)
oder @Category(LargeTest.class)
usw. durch die Definition eines eigenen Kategorien - siehe Test-Kategorien Repo für ein Beispiel