AndroidX Test شامل مجموعه ای از قوانین JUnit است که با AndroidJUnitRunner استفاده می شود. قوانین JUnit انعطاف پذیری بیشتری را فراهم می کند و کد دیگ بخار مورد نیاز در تست ها را کاهش می دهد. برای مثال می توان از آنها برای شروع یک فعالیت خاص استفاده کرد.
ActivityScenarioRule
این قانون آزمایش عملکردی یک فعالیت را ارائه می دهد. این قانون فعالیت انتخاب شده را قبل از هر تست مشروح شده با @Test
و همچنین قبل از هر روشی که با @Before
مشروح شده است راه اندازی می کند. این قانون پس از اتمام تست و مشروح تمام روشها با @After
finish فعالیت را خاتمه میدهد. برای دسترسی به فعالیت داده شده در منطق آزمایشی خود، یک callback قابل اجرا برای ActivityScenarioRule.getScenario().onActivity()
ارائه دهید.
قطعه کد زیر نحوه ادغام ActivityScenarioRule
در منطق تست خود نشان می دهد:
کاتلین
@RunWith(AndroidJUnit4::class.java) @LargeTest class MyClassTest { @get:Rule val activityRule = ActivityScenarioRule(MyClass::class.java) @Test fun myClassMethod_ReturnsTrue() { activityRule.scenario.onActivity { … } // Optionally, access the activity. } }
جاوا
public class MyClassTest { @Rule public ActivityScenarioRule<MyClass> activityRule = new ActivityScenarioRule(MyClass.class); @Test public void myClassMethod_ReturnsTrue() { ... } }
ServiceTestRule
این قانون یک مکانیسم ساده برای راه اندازی سرویس شما قبل از آزمایش و خاموش کردن آن قبل و بعد از آن فراهم می کند. می توانید سرویس را با یکی از روش های کمکی راه اندازی یا متصل کنید. پس از اتمام آزمایش و پایان یافتن هر روشی که با @After
به پایان رسید، به طور خودکار متوقف یا باز می شود.
کاتلین
@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(); } }
منابع اضافی
برای اطلاعات بیشتر در مورد استفاده از قوانین JUnit در تست های اندروید، به منابع زیر مراجعه کنید.
مستندات
- راهنمای قطعات خود را آزمایش کنید تا قطعات را به صورت مجزا آزمایش کنید.
- آزمایش طرحبندی Compose ، برای آزمایش رابطهای کاربری ساخته شده با Compose.
نمونه ها
- BasicSample : استفاده ساده از
ActivityScenarioRule
.