Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Se você estiver implementando um Service local como componente do app,
pode criar testes instrumentados para verificar se o comportamento está correto.
O AndroidX Test oferece uma API para testar os objetos Service em
isolamento. A classe ServiceTestRule é uma regra do JUnit 4 que inicia seu
serviço antes da execução dos métodos de teste de unidade e encerra o serviço após
testes concluídos. Para saber mais sobre as regras do JUnit 4, consulte a documentação do JUnit
Documentação.
Configurar o ambiente de teste
Antes de criar seu teste de integração para o serviço, configure
seu projeto para testes de instrumentação, conforme descrito em Configurar projeto para
AndroidX Test
Criar um teste de integração para serviços
Programe seu teste de integração como uma classe de teste do JUnit4. Para saber mais
sobre a criação de classes de teste do JUnit 4 e o uso de métodos de declaração do JUnit 4, consulte
Crie uma classe de teste instrumentado.
Crie uma instância ServiceTestRule no teste usando o @Rule.
uma anotação.
O exemplo a seguir mostra como implementar um teste de integração para um
serviço. O método de teste testWithBoundService() verifica se o app é vinculado
para um serviço local e que a interface do serviço se comporte
corretamente.
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);}
Outros recursos
Para saber mais sobre esse tópico, consulte os recursos adicionais a seguir.
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 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)"]]