Jaki jest cel adnotacji @SmallTest, @MediumTest i @LargeTest w systemie Android?

99

Jestem nowy w Androidzie i widziałem przykładowy kod wykorzystujący te adnotacje. Na przykład:

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

Co zapewnia ta adnotacja?

Eric Palakovich Carr
źródło

Odpowiedzi:

9

Jako dodatek do odpowiedzi Davidanna i głównie pytania OP w komentarzu:

W kontekście powyższego kodu, czy to faktycznie DO niczego oprócz zostawić notatkę dla innych deweloperów? Czy coś wymusza? Czy są jakieś narzędzia, które wykorzystują tę adnotację? Jaki jest cel tworzenia aplikacji na Androida?

Możesz uruchomić grupę testów z adnotacją określoną adnotacją.

Z dokumentacji AndroidJUnitRunner :

Uruchamianie określonego rozmiaru testu, tj. Z adnotacją SmallTest lub MediumTest lub LargeTest :

adb shell am instrument -w -e size [small | medium | large] com.android.foo/android.support.test.runner.AndroidJUnitRunner

Możesz również ustawić te parametry za pomocą gradle:


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

Przez gradle:

-Pandroid.testInstrumentationRunnerArguments.size=small

Więcej informacji można znaleźć w poście Douga Stevensona oraz w tym poście na blogu .

azizbekian
źródło
OK, więc w skrócie mogę uruchomić tylko zestaw testów @SmallTest z adb shell am instrument -w -e size small com.android.foo/android.support.test.runner.AndroidJUnitRunner; dzięki
kosiara - Bartosz Kosarzycki
Jak określimy adnotację w poleceniu gradle? Na przykład coś takiego:./gradlew connectedDebugAndroidTest -size MediumTest
Mr-IDE
@ Mr-IDE, czy dostałeś odpowiedź?
Jan
138

Ten wpis na blogu najlepiej to wyjaśnia. Zasadniczo jest to następujące:

wykres testowy

  1. Mały: ten test nie współdziała z żadnym systemem plików ani siecią.
  2. Średni: dostęp do systemów plików na komputerze, na którym są uruchomione testy.
  3. Duży: dostęp do zewnętrznych systemów plików, sieci itp.

Zgodnie z blogiem programistów Androida mały test powinien zająć <100 ms, średni test <2 s, a duży test <120 s.

Zobacz tę stronę (wyszukaj „@SmallTest”), aby dowiedzieć się, jak określić, które testy mają zostać uruchomione.

David Weiser
źródło
13
Widzę (i pamiętam, że czytałem ten artykuł w zeszłym miesiącu). Ale w kontekście powyższego kodu, czy faktycznie robi cokolwiek poza pozostawieniem notatki dla innych programistów? Czy coś wymusza? Czy są jakieś narzędzia, które wykorzystują tę adnotację? Jaki jest cel tworzenia aplikacji na Androida?
Eric Palakovich Carr
3
@Eric Android TestRunner umożliwia określenie rozmiaru testów do uruchomienia.
Cheryl Simon
7
Istnieje nowszy blog Google w tej sprawie: plus.google.com/+AndroidDevelopers/posts/TPy1EeSaSg8
k29
1
@SmallTest jest przestarzały
Neon Warge,
1
@NeonWarge użyj importu android.support.test.filters. [Mały] Test;
Alexander Sidikov Pfeif,
1

Możesz również dodawać adnotacje do testów jednostkowych POJO za pomocą @Category(MediumTest.class)lub @Category(LargeTest.class), itp., Definiując własne kategorie - zobacz przykład repozytorium test- category

Rhisiart
źródło