Projekt für AndroidX Test einrichten

AndroidX Test ist eine Sammlung von Jetpack-Bibliotheken, mit denen Sie Tests für Android-Apps ausführen können. Es bietet auch eine Reihe von Tools, die Ihnen beim Schreiben dieser Tests helfen.

AndroidX Test stellt beispielsweise JUnit4-Regeln bereit, um Aktivitäten zu starten und mit ihnen in JUnit4-Tests zu interagieren. Es enthält auch UI-Test-Frameworks wie Espresso, UI Automator und den Robolectric-Simulator.

AndroidX-Testbibliotheken hinzufügen

Damit Sie AndroidX Test verwenden können, müssen Sie die Abhängigkeiten Ihres App-Projekts in Ihrer Entwicklungsumgebung ändern.

Gradle-Abhängigkeiten hinzufügen

Führen Sie die folgenden Schritte aus, um die Abhängigkeiten Ihres App-Projekts zu ändern:

  • Schritt 1: Öffnen Sie die Datei build.gradle für Ihr Gradle-Modul.
  • Schritt 2: Prüfen Sie im Abschnitt „Repositories“, ob das Maven-Repository von Google angezeigt wird:
  allprojects {
    repositories {
      jcenter()
      google()
    }
  }
  • Schritt 3: Fügen Sie für jedes AndroidX-Testpaket, das Sie verwenden möchten, den zugehörigen Paketnamen zum Abschnitt „Abhängigkeiten“ hinzu. Fügen Sie beispielsweise die folgenden Zeilen hinzu, um das Paket espresso-core hinzuzufügen:

Groovig

dependencies {
        ...
        androidTestImplementation "androidx.test.espresso:espresso-core:$espressoVersion"
    }

Kotlin

dependencies {
        ...
        androidTestImplementation('androidx.test.espresso:espresso-core:$espressoVersion')
    }

Dies sind die häufigsten verfügbaren AndroidX-Testabhängigkeiten:

Groovig

dependencies {
    // Core library
    androidTestImplementation "androidx.test:core:$androidXTestVersion0"

    // AndroidJUnitRunner and JUnit Rules
    androidTestImplementation "androidx.test:runner:$testRunnerVersion"
    androidTestImplementation "androidx.test:rules:$testRulesVersion"

    // Assertions
    androidTestImplementation "androidx.test.ext:junit:$testJunitVersion"
    androidTestImplementation "androidx.test.ext:truth:$truthVersion"

    // Espresso dependencies
    androidTestImplementation "androidx.test.espresso:espresso-core:$espressoVersion"
    androidTestImplementation "androidx.test.espresso:espresso-contrib:$espressoVersion"
    androidTestImplementation "androidx.test.espresso:espresso-intents:$espressoVersion"
    androidTestImplementation "androidx.test.espresso:espresso-accessibility:$espressoVersion"
    androidTestImplementation "androidx.test.espresso:espresso-web:$espressoVersion"
    androidTestImplementation "androidx.test.espresso.idling:idling-concurrent:$espressoVersion"

    // The following Espresso dependency can be either "implementation",
    // or "androidTestImplementation", depending on whether you want the
    // dependency to appear on your APK’"s compile classpath or the test APK
    // classpath.
    androidTestImplementation "androidx.test.espresso:espresso-idling-resource:$espressoVersion"
}

Kotlin

dependencies {
    // Core library
    androidTestImplementation("androidx.test:core:$androidXTestVersion")

    // AndroidJUnitRunner and JUnit Rules
    androidTestImplementation("androidx.test:runner:$testRunnerVersion")
    androidTestImplementation("androidx.test:rules:$testRulesVersion")

    // Assertions
    androidTestImplementation("androidx.test.ext:junit:$testJunitVersion")
    androidTestImplementation("androidx.test.ext:truth:$truthVersion")

    // Espresso dependencies
    androidTestImplementation( "androidx.test.espresso:espresso-core:$espressoVersion")
    androidTestImplementation( "androidx.test.espresso:espresso-contrib:$espressoVersion")
    androidTestImplementation( "androidx.test.espresso:espresso-intents:$espressoVersion")
    androidTestImplementation( "androidx.test.espresso:espresso-accessibility:$espressoVersion")
    androidTestImplementation( "androidx.test.espresso:espresso-web:$espressoVersion")
    androidTestImplementation( "androidx.test.espresso.idling:idling-concurrent:$espressoVersion")

    // The following Espresso dependency can be either "implementation",
    // or "androidTestImplementation", depending on whether you want the
    // dependency to appear on your APK"s compile classpath or the test APK
    // classpath.
    androidTestImplementation( "androidx.test.espresso:espresso-idling-resource:$espressoVersion")
}

Die Seite Versionshinweise enthält eine Tabelle mit den neuesten Versionen der einzelnen Artefakte.

Weitere Informationen zu diesen Bibliotheken finden Sie im Paketindex oder im Klassenindex.

Projekte, die verworfene Klassen verwenden

Wenn Ihre Anwendung Tests verwendet , die auf verworfenen JUnit3-basierten android.test-Klassen wie InstrumentationTestCase und TestSuiteLoader basieren, fügen Sie im Abschnitt android der Datei die folgenden Zeilen hinzu:

android {
    ...
    useLibrary 'android.test.runner'

    useLibrary 'android.test.base'
    useLibrary 'android.test.mock'
  }

Manifestdeklarationen hinzufügen

Zum Ausführen von Tests, die auf eingestellten JUnit3-basierten android.test-Klassen basieren, fügen Sie dem Manifest Ihrer Test-App die erforderlichen <uses-library>-Elemente hinzu. Wenn Sie beispielsweise Tests hinzufügen, die von der android.test.runner-Bibliothek abhängen, fügen Sie dem Manifest Ihrer App das folgende Element hinzu:

<!-- You don't need to include android:required="false" if your app's

   minSdkVersion is 28 or higher. -->

<uses-library android:name="android.test.runner"

       android:required="false" />

Informationen zum Ermitteln der Bibliothek, die eine bestimmte JUnit-basierte Klasse enthält, finden Sie unter JUnit-basierte Bibliotheken.

Überlegungen zur Verwendung eingestellter Klassen und bei einer Ausrichtung auf Android 9 oder

höher

Die Hinweise in diesem Abschnitt gelten nur, wenn Ihre App auf Android 9 (API-Level 28) oder höher ausgerichtet ist und die SDK-Mindestversion für Ihre App auf Android 9 festgelegt ist.

Die android.test.runner-Bibliothek hängt implizit von den android.test.base- und android.test.mock-Bibliotheken ab. Wenn Ihre App nur Klassen aus android.test.base oder android.test.mock verwendet, können Sie die Bibliotheken selbst einschließen:

<!-- For both of these declarations, you don't need to include
   android:required="false" if your app's minSdkVersion is 28
   or higher. -->

<uses-library android:name="android.test.base"
       android:required="false" />
<uses-library android:name="android.test.mock"
       android:required="false" />