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:
@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.
}
}
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.
@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()
}
}
@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
.