Si vous implémentez un Service
local en tant que composant de votre application, vous devez
peuvent créer des tests d'instrumentation pour vérifier que leur comportement est correct.
AndroidX Test fournit une API pour tester vos objets Service
dans
l'isolation. La classe ServiceTestRule
est une règle JUnit 4 qui lance votre
avant l'exécution de vos méthodes de test unitaire, et l'arrête après
sont terminés. Pour en savoir plus sur les règles JUnit 4, consultez la page JUnit
documentation.
Configurer votre environnement de test
Avant de créer votre test d'intégration pour le service, assurez-vous de configurer votre projet pour les tests d'instrumentation, comme décrit dans la section Configurer un projet pour Test AndroidX
Créer un test d'intégration pour les services
Votre test d'intégration doit être écrit sous la forme d'une classe de test JUnit 4. Pour en savoir plus sur la création de classes de test JUnit 4 et l'utilisation des méthodes d'assertion JUnit 4, consultez la page Créez une classe de test d'instrumentation.
Créez une instance ServiceTestRule
dans votre test à l'aide de @Rule
.
.
Kotlin
@get:Rule val serviceRule = ServiceTestRule()
Java
@Rule public final ServiceTestRule serviceRule = new ServiceTestRule();
L'exemple suivant montre comment implémenter un test d'intégration pour un
Google Cloud. La méthode de test testWithBoundService()
vérifie que l'application se lie
à un service local et que l'interface de service
correctement.
Kotlin
@Test @Throws(TimeoutException::class) fun testWithBoundService() { // Create the service Intent. val serviceIntent = Intent( ApplicationProvider.getApplicationContext<Context>(), LocalService::class.java ).apply { // Data can be passed to the service via the Intent. putExtra(SEED_KEY, 42L) } // Bind the service and grab a reference to the binder. val binder: IBinder = serviceRule.bindService(serviceIntent) // Get the reference to the service, or you can call // public methods on the binder directly. val service: LocalService = (binder as LocalService.LocalBinder).getService() // Verify that the service is working correctly. assertThat(service.getRandomInt(), `is`(any(Int::class.java))) }
Java
@Test public void testWithBoundService() throws TimeoutException { // Create the service Intent. Intent serviceIntent = new Intent(ApplicationProvider.getApplicationContext(), LocalService.class); // Data can be passed to the service via the Intent. serviceIntent.putExtra(LocalService.SEED_KEY, 42L); // Bind the service and grab a reference to the binder. IBinder binder = serviceRule.bindService(serviceIntent); // Get the reference to the service, or you can call // public methods on the binder directly. LocalService service = ((LocalService.LocalBinder) binder).getService(); // Verify that the service is working correctly. assertThat(service.getRandomInt()).isAssignableTo(Integer.class); }
Ressources supplémentaires
Pour en savoir plus à ce sujet, consultez les ressources supplémentaires suivantes.