Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

AndroidX 테스트에 JUnit4 규칙 사용

AndroidX 테스트에는 AndroidJUnitRunner와 함께 사용되는 JUnit 규칙 세트가 포함되어 있습니다. JUnit 규칙은 유연성을 높이고 테스트에 필요한 상용구 코드를 줄입니다.

ActivityTestRule

이 규칙은 단일 활동의 기능 테스트를 제공합니다. 테스트 중인 활동은 @Test 주석이 달린 각 테스트 및 @Before 주석이 달린 메서드 이전에 시작되며, 테스트가 완료되고 @After 주석이 달린 모든 메서드가 완료된 이후에 종료됩니다. 테스트 로직에서 테스트 중인 활동에 액세스하려면 ActivityTestRule.getActivity()를 호출합니다.

참고: AndroidX 테스트에는 현재 베타 버전으로 제공되는 ActivityScenario라는 또 다른 API가 포함되어 있습니다. 이 API는 다양한 테스트 환경에서 작동하며 이 API를 사용하는 테스트 내에서 스레드 안전을 제공합니다.

이 API를 사용해 보고 앱 활동의 수명 주기를 촉진하는 데 도움이 되는 방법을 알아보세요.

다음 코드 스니펫은 ActivityTestRule을 테스트 로직에 통합하는 방법을 보여줍니다.

Kotlin

    @RunWith(AndroidJUnit4::class.java)
    @LargeTest
    class MyClassTest {
        @get:Rule
        val activityRule = ActivityTestRule(MyClass::class.java)

        @Test fun myClassMethod_ReturnsTrue() { ... }
    }
    

자바

    @RunWith(AndroidJUnit4.class)
    @LargeTest
    public class MyClassTest {
        @Rule
        public ActivityTestRule<MyClass> activityRule =
                new ActivityTestRule(MyClass.class);

        @Test
        public void myClassMethod_ReturnsTrue() { ... }
    }

ServiceTestRule

이 규칙은 테스트 전후에 서비스를 시작하고 종료하는 간소화된 메커니즘을 제공합니다. 또한 서비스를 시작하거나 서비스와 결합할 때 서비스가 성공적으로 연결되도록 보장합니다. 도우미 메서드 중 하나를 사용하여 서비스를 시작하거나 결합할 수 있습니다. 테스트가 완료되고 @After 주석이 달린 메서드가 완료된 후 서비스가 자동으로 중지되거나 결합 해제됩니다.

Kotlin

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

참고 자료

Android 테스트에서 JUnit 규칙을 사용하는 방법에 관한 자세한 내용은 다음 자료를 참조하세요.

샘플

  • BasicSample: ActivityTestRule의 간단한 사용법입니다.