Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Wenn du eine lokale Service als Komponente deiner App implementierst,
können instrumentierte Tests erstellen, um zu prüfen, ob das Verhalten korrekt ist.
AndroidX Test bietet eine API zum Testen deiner Service-Objekte in
Isolation. Die Klasse ServiceTestRule ist eine JUnit 4-Regel, mit der Ihre
bevor die Einheitentestmethoden ausgeführt werden, und fährt den Dienst nach dem
abgeschlossen sind. Weitere Informationen zu JUnit 4-Regeln findest du in der JUnit
Dokumentation.
Testumgebung einrichten
Bevor Sie den Integrationstest für den Dienst erstellen, müssen Sie die Konfiguration
Ihr Projekt für instrumentierte Tests verwenden, wie unter Projekt einrichten für
AndroidX-Test
Integrationstest für Dienste erstellen
Dein Integrationstest sollte als JUnit 4-Testklasse geschrieben werden. Weitere Informationen
zum Erstellen von JUnit 4-Testklassen und zur Verwendung von JUnit 4-Assertion-Methoden, siehe
Erstellen Sie eine instrumentierte Testklasse.
Erstellen Sie im Test eine ServiceTestRule-Instanz mithilfe der @Rule
.
Das folgende Beispiel zeigt, wie Sie einen Integrationstest für eine
. Mit der Testmethode testWithBoundService() wird geprüft, ob die Anwendung bindet
an einen lokalen Dienst senden
und dass sich die Dienstschnittstelle
korrekt sind.
Kotlin
@Test@Throws(TimeoutException::class)funtestWithBoundService(){// Create the service Intent.valserviceIntent=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.valbinder:IBinder=serviceRule.bindService(serviceIntent)// Get the reference to the service, or you can call// public methods on the binder directly.valservice:LocalService=(binderasLocalService.LocalBinder).getService()// Verify that the service is working correctly.assertThat(service.getRandomInt(),`is`(any(Int::class.java)))}
Java
@TestpublicvoidtestWithBoundService()throwsTimeoutException{// Create the service Intent.IntentserviceIntent=newIntent(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.IBinderbinder=serviceRule.bindService(serviceIntent);// Get the reference to the service, or you can call// public methods on the binder directly.LocalServiceservice=((LocalService.LocalBinder)binder).getService();// Verify that the service is working correctly.assertThat(service.getRandomInt()).isAssignableTo(Integer.class);}
Weitere Informationen
Weitere Informationen zu diesem Thema finden Sie in den folgenden zusätzlichen Ressourcen.
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2025-07-27 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-07-27 (UTC)."],[],[],null,["# Test your service\n\nIf you are implementing a local [`Service`](/reference/android/app/Service) as a component of your app, you\ncan create [instrumented tests](/training/testing/unit-testing/instrumented-unit-tests) to verify that its behavior is correct.\n\n[AndroidX Test](/training/testing) provides an API for testing your `Service` objects in\nisolation. The [`ServiceTestRule`](/reference/androidx/test/rule/ServiceTestRule) class is a JUnit 4 rule that starts your\nservice before your unit test methods run, and shuts down the service after\ntests complete. To learn more about JUnit 4 rules, see the [JUnit\ndocumentation](https://github.com/junit-team/junit/wiki/Rules).\n| **Note:** The `ServiceTestRule` class does not support testing of [`IntentService`](/reference/android/app/IntentService) objects. If you need to test an `IntentService` object, you should encapsulate the logic in a separate class and create a corresponding unit test instead.\n\nSet up your testing environment\n-------------------------------\n\nBefore building your integration test for the service, make sure to configure\nyour project for instrumented tests, as described in [Set up project for\nAndroidX Test](/training/testing/set-up-project).\n\nCreate an integration test for services\n---------------------------------------\n\nYour integration test should be written as a JUnit 4 test class. To learn more\nabout creating JUnit 4 test classes and using JUnit 4 assertion methods, see\n[Create an instrumented test class](/training/testing/unit-testing/instrumented-unit-tests#create-instrumented).\n\nCreate a `ServiceTestRule` instance in your test by using the `@Rule`\nannotation. \n\n### Kotlin\n\n```kotlin\n@get:Rule\nval serviceRule = ServiceTestRule()\n```\n\n### Java\n\n```java\n@Rule\npublic final ServiceTestRule serviceRule = new ServiceTestRule();\n```\n\nThe following example shows how you might implement an integration test for a\nservice. The test method `testWithBoundService()` verifies that the app binds\nsuccessfully to a local service and that the service interface behaves\ncorrectly. \n\n### Kotlin\n\n```kotlin\n@Test\n@Throws(TimeoutException::class)\nfun testWithBoundService() {\n // Create the service Intent.\n val serviceIntent = Intent(\n ApplicationProvider.getApplicationContext\u003cContext\u003e(),\n LocalService::class.java\n ).apply {\n // Data can be passed to the service via the Intent.\n putExtra(SEED_KEY, 42L)\n }\n\n // Bind the service and grab a reference to the binder.\n val binder: IBinder = serviceRule.bindService(serviceIntent)\n\n // Get the reference to the service, or you can call\n // public methods on the binder directly.\n val service: LocalService = (binder as LocalService.LocalBinder).getService()\n\n // Verify that the service is working correctly.\n assertThat(service.getRandomInt(), `is`(any(Int::class.java)))\n}\n```\n\n### Java\n\n```java\n@Test\npublic void testWithBoundService() throws TimeoutException {\n // Create the service Intent.\n Intent serviceIntent =\n new Intent(ApplicationProvider.getApplicationContext(),\n LocalService.class);\n\n // Data can be passed to the service via the Intent.\n serviceIntent.putExtra(LocalService.SEED_KEY, 42L);\n\n // Bind the service and grab a reference to the binder.\n IBinder binder = serviceRule.bindService(serviceIntent);\n\n // Get the reference to the service, or you can call\n // public methods on the binder directly.\n LocalService service =\n ((LocalService.LocalBinder) binder).getService();\n\n // Verify that the service is working correctly.\n assertThat(service.getRandomInt()).isAssignableTo(Integer.class);\n}\n```\n\nAdditional resources\n--------------------\n\nTo learn more about this topic, consult the following additional resources.\n\n### Samples\n\n- [Service Test Code Samples](https://github.com/android/testing-samples/tree/main/integration/ServiceTestRuleSample)"]]