Projekt für AndroidX Test einrichten

AndroidX Test ist eine Sammlung von Jetpack-Bibliotheken, mit denen du Tests ausführen kannst gegen Android-Apps. Es bietet auch eine Reihe von Tools, die Ihnen beim Verfassen dieser Tests durchführen.

AndroidX Test stellt beispielsweise JUnit4-Regeln bereit, um Aktivitäten zu starten und in JUnit4-Tests interagieren können. Es enthält auch Frameworks für UI-Tests wie Espresso, UI Automator und Robolectric-Simulator.

AndroidX-Testbibliotheken hinzufügen

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

Gradle-Abhängigkeiten hinzufügen

So ändern Sie die Abhängigkeiten Ihres App-Projekts:

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

Cool

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:

Cool

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")
}

Auf der Seite Versionshinweise finden Sie eine Tabelle mit den aktuellen Versionen Artefakt.

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

Projekte mit verworfenen Klassen

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

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

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

Manifestdeklarationen hinzufügen

Um Tests auszuführen, die auf verworfenen JUnit3-basierten android.test-Klassen beruhen, fügen Sie die erforderlichen <uses-library>-Elemente zum Manifest deiner Test-App hinzufügen. Für Wenn Sie beispielsweise Tests hinzufügen, die von der Bibliothek android.test.runner abhängen, fügen Sie das folgende Element in das Manifest Ihrer App ein:

<!-- 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" />

Um die Bibliothek zu ermitteln, die eine bestimmte JUnit-basierte Klasse enthält, siehe JUnit-basierte Bibliotheken.

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

höher

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

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

<!-- 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" />