AndroidX Test inclut un ensemble de règles JUnit à utiliser avec le AndroidJUnitRunner : Les règles JUnit offrent plus de flexibilité et réduisent le nombre code récurrent requis lors des tests. Par exemple, ils peuvent servir à démarrer activité spécifique.
ActivityScénarioRule
Cette règle permet de tester le fonctionnement d'une seule activité. La règle est lancée
l'activité choisie avant chaque test annoté avec @Test
, ainsi qu'avant
toute méthode annotée avec @Before
. La règle met fin à l'activité après le
les tests terminés et toutes les méthodes annotées avec la fin @After
. Pour accéder à l'objet
dans votre logique de test, fournissez un rappel exécutable pour
ActivityScenarioRule.getScenario().onActivity()
L'extrait de code suivant montre comment incorporer
ActivityScenarioRule
dans votre logique de test:
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() { ... } }
Règle de test de service
Cette règle offre un mécanisme simplifié pour lancer votre service avant que le
des tests et de l'arrêter
avant et après. Vous pouvez démarrer ou lier le service
l'une des méthodes d'assistance. Il arrête ou se dissocie automatiquement après le test
et toutes les méthodes annotées avec @After
sont terminées.
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(); } }
Ressources supplémentaires
Pour en savoir plus sur l'utilisation des règles JUnit dans les tests Android, consultez le les ressources suivantes.
Documentation
- Tester vos fragments, pour les tester de manière isolée.
- Tester votre mise en page Compose pour tester les interfaces utilisateur créées avec Compose.
Exemples
- BasicSample: utilisation simple de
ActivityScenarioRule
.