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?

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 .


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.


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.