AndroidX Test enthält eine Reihe von JUnit-Regeln zur Verwendung mit dem AndroidJUnitRunner. JUnit-Regeln bieten mehr Flexibilität und Boilerplate-Code ist in Tests erforderlich. Sie können beispielsweise verwendet werden, um eine bestimmte Aktivität zu verstehen.
AktivitätsszenarioRegel
Diese Regel ermöglicht Funktionstests einer einzelnen Aktivität. Die Regel wird gestartet.
die ausgewählte Aktivität vor jedem mit @Test
annotierten Test sowie vor
jede mit @Before
annotierte Methode. Die Regel beendet die Aktivität nach dem
Der Test ist abgeschlossen und alle mit @After
gekennzeichneten Methoden sind abgeschlossen. Für den Zugriff auf die
Aktivität in Ihrer Testlogik enthält, stellen Sie einen Callback bereit, der für
ActivityScenarioRule.getScenario().onActivity()
Das folgende Code-Snippet zeigt, wie Sie
ActivityScenarioRule
in Ihre Testlogik ein:
Kotlin
@RunWith(AndroidJUnit4::class.java) @LargeTest class MyClassTest { @get:Rule val activityRule = ActivityScenarioRule(MyClass::class.java) @Test fun myClassMethod_ReturnsTrue() { activityRule.scenario.onActivity { … } // Optionally, access the activity. } }
Java
public class MyClassTest { @Rule public ActivityScenarioRule<MyClass> activityRule = new ActivityScenarioRule(MyClass.class); @Test public void myClassMethod_ReturnsTrue() { ... } }
DienstTestregel
Diese Regel bietet einen vereinfachten Mechanismus zum Starten Ihres Dienstes vor der
Tests durchführen und das Gerät vorher und nachher ausschalten. Sie können den Dienst mit
einer der Hilfsmethoden. Sie wird nach dem Test automatisch beendet oder die Bindung aufgehoben
abgeschlossen sind und alle mit @After
annotierten Methoden abgeschlossen sind.
Kotlin
@RunWith(AndroidJUnit4::class.java) @MediumTest class MyServiceTest { @get:Rule val serviceRule = ServiceTestRule() @Test fun testWithStartedService() { serviceRule.startService( Intent(ApplicationProvider.getApplicationContext<Context>(), MyService::class.java)) // Add your test code here. } @Test fun testWithBoundService() { val binder = serviceRule.bindService( Intent(ApplicationProvider.getApplicationContext(), MyService::class.java)) val service = (binder as MyService.LocalBinder).service assertThat(service.doSomethingToReturnTrue()).isTrue() } }
Java
@RunWith(AndroidJUnit4.class) @MediumTest public class MyServiceTest { @Rule public final ServiceTestRule serviceRule = new ServiceTestRule(); @Test public void testWithStartedService() { serviceRule.startService( new Intent(ApplicationProvider.getApplicationContext(), MyService.class)); // Add your test code here. } @Test public void testWithBoundService() { IBinder binder = serviceRule.bindService( new Intent(ApplicationProvider.getApplicationContext(), MyService.class)); MyService service = ((MyService.LocalBinder) binder).getService(); assertThat(service.doSomethingToReturnTrue()).isTrue(); } }
Weitere Informationen
Weitere Informationen zur Verwendung von JUnit-Regeln in Android-Tests finden Sie in der in den folgenden Ressourcen.
Dokumentation
- Leitfaden zu Fragmenten testen, um Fragmente isoliert zu testen.
- Layout von „Compose“ testen, um UIs zu testen, die mit „Compose“ erstellt wurden
Produktproben
- BasicSample: Einfache Verwendung von
ActivityScenarioRule
.