Wat is het doel van @SmallTest-, @MediumTest- en @LargeTest-annotaties in Android?

Ik ben nieuw bij Android en ik heb voorbeeldcode gezien met deze annotaties. Bijvoorbeeld:

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

Wat levert die annotatie op?


Antwoord 1, autoriteit 100%

Dit blogberichtlegt dit het beste uit. In principe is het het volgende:

testkaart

  1. Klein: deze test heeft geen interactie met een bestandssysteem of netwerk.
  2. Medium: toegang tot bestandssystemen op box die tests uitvoert.
  3. Groot: toegang tot externe bestandssystemen, netwerken, enz.

Volgens het Android Developers-blogzou een kleine test < 100 ms, een gemiddelde test < 2s, en een grote test < 120s.

Bekijk deze pagina(zoek naar “@SmallTest”) op hoe te specificeren welke tests worden uitgevoerd.


Antwoord 2, autoriteit 10%

Als aanvulling op Davidann’s antwoorden vooral Op’s vraagin de opmerking:

In de context van de bovenstaande code, DOEhet eigenlijk iets behalve een notitie achterlaten voor andere ontwikkelaars? Dwingt het iets af? Zijn er tools die deze annotatie gebruiken? Wat is het doel in Android-ontwikkeling?

Je kunt een groep tests uitvoeren die zijn geannoteerd met een specifieke annotatie.

Van AndroidJUnitRunner-documentatie:

Een specifieke testgrootte uitvoeren, d.w.z. geannoteerd met SmallTestof MediumTestof LargeTest:

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

U kunt deze parameters ook instellen via gradle:


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

Via gradle:

-Pandroid.testInstrumentationRunnerArguments.size=small

Zie Doug Stevenson blogpostevenals deze blogpostvoor meer details.


Antwoord 3

U kunt POJO-eenheidstests ook annoteren met @Category(MediumTest.class)of @Category(LargeTest.class), enz. door uw eigen Categorieën– zie de test-categoriesrepo voor een voorbeeld

Other episodes