Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Если вы реализуете локальную Service как компонент своего приложения, вы можете создать инструментальные тесты , чтобы проверить правильность ее поведения.
AndroidX Test предоставляет API для изолированного тестирования объектов Service . Класс ServiceTestRule — это правило JUnit 4, которое запускает службу до запуска методов модульного тестирования и завершает работу службы после завершения тестов. Дополнительные сведения о правилах JUnit 4 см. в документации JUnit .
Настройте среду тестирования
Прежде чем создавать интеграционный тест для службы, обязательно настройте свой проект для инструментальных тестов, как описано в разделе Настройка проекта для AndroidX Test .
Создайте интеграционный тест для сервисов
Ваш интеграционный тест должен быть написан как тестовый класс JUnit 4. Дополнительные сведения о создании тестовых классов JUnit 4 и использовании методов утверждения JUnit 4 см. в разделе Создание инструментированного тестового класса .
Создайте экземпляр ServiceTestRule в своем тесте, используя аннотацию @Rule .
В следующем примере показано, как можно реализовать интеграционный тест для службы. Тестовый метод testWithBoundService() проверяет, что приложение успешно привязывается к локальной службе и что интерфейс службы работает правильно.
Котлин
@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)))}
Ява
@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);}
Дополнительные ресурсы
Чтобы узнать больше по этой теме, обратитесь к следующим дополнительным ресурсам.
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-29 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-07-29 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)"]]