Was ist der Zweck der Annotationen @SmallTest, @MediumTest und @LargeTest in Android?

99

Ich bin neu in Android und habe Beispielcode mit diesen Anmerkungen gesehen. Beispielsweise:

@SmallTest
public void testStuff() {
    TouchUtils.tapView(this, anEditTextView);
    sendKeys("H E L P SPACE M E PERIOD");
    assertEquals("help me.", anEditTextView.getText().toString());
}

Was bewirkt diese Anmerkung?

Eric Palakovich Carr
quelle

Antworten:

9

Als Ergänzung zu Davidanns Antwort und hauptsächlich zu OPs Frage im Kommentar:

Im Zusammenhang mit dem obigen Code, ist es tatsächlich DO nichts außer leave eine Notiz für andere Entwickler? Erzwingt es etwas? Gibt es Tools, die diese Anmerkung verwenden? Was ist der Zweck in der Android-Entwicklung?

Sie können eine Gruppe von Tests ausführen, die mit bestimmten Anmerkungen versehen sind.

Aus der AndroidJUnitRunner-Dokumentation :

Ausführen einer bestimmten Testgröße, dh mit SmallTest oder MediumTest oder LargeTest kommentiert :

adb shell bin instrument -w -e size [klein | mittel | groß] com.android.foo/android.support.test.runner.AndroidJUnitRunner

Sie können diese Parameter auch über gradle einrichten:


    android {
        ...
        defaultConfig {
            ...
            testInstrumentationRunnerArgument 'size', 'Large'
        }
    }

Über Gradle:

-Pandroid.testInstrumentationRunnerArguments.size=small

Weitere Informationen finden Sie im Doug Stevenson-Blogbeitrag sowie in diesem Blogbeitrag .

Azizbekian
quelle
OK, kurz gesagt, ich kann nur die @ SmallTest-Testsuite mit ausführen adb shell am instrument -w -e size small com.android.foo/android.support.test.runner.AndroidJUnitRunner. danke
kosiara - Bartosz Kosarzycki
Wie geben wir die Annotation in einem Gradle-Befehl an? Zum Beispiel so etwas wie:./gradlew connectedDebugAndroidTest -size MediumTest
Mr-IDE
@ Mr-IDE, hast du die Antwort bekommen?
John
138

Dieser Blog-Beitrag erklärt es am besten. Grundsätzlich ist es das Folgende:

Testkarte

  1. Klein: Dieser Test interagiert nicht mit einem Dateisystem oder Netzwerk.
  2. Mittel: Greift auf Dateisysteme auf einer Box zu, auf der Tests ausgeführt werden.
  3. Groß: Zugriff auf externe Dateisysteme, Netzwerke usw.

Laut dem Blog der Android-Entwickler sollte ein kleiner Test <100 ms, ein mittlerer Test <2 s und ein großer Test <120 s dauern.

Auf dieser Seite (Suche nach "@SmallTest") erfahren Sie, wie Sie angeben, welche Tests ausgeführt werden.

David Weiser
quelle
13
Ich sehe (und erinnere mich, diesen Artikel letzten Monat gelesen zu haben). Aber tut es im Zusammenhang mit dem obigen Code tatsächlich etwas anderes, als anderen Entwicklern eine Notiz zu hinterlassen? Erzwingt es etwas? Gibt es Tools, die diese Anmerkung verwenden? Was ist der Zweck in der Android-Entwicklung?
Eric Palakovich Carr
3
@Eric Mit dem Android TestRunner können Sie festlegen, welche Testgröße ausgeführt werden soll.
Cheryl Simon
7
Es gibt ein neueres Blog von Google zu diesem Thema: plus.google.com/+AndroidDevelopers/posts/TPy1EeSaSg8
k29
1
@ SmallTest ist veraltet
Neon Warge
1
@NeonWarge benutze import android.support.test.filters. [Small] Test;
Alexander Sidikov Pfeif
1

Sie können auch mit Anmerkungen versehen POJO Unit - Tests mit @Category(MediumTest.class)oder @Category(LargeTest.class)usw. durch eigene Definition von Kategorien - siehe die Testkategorien für ein Beispiel Repo

Rhisiart
quelle