يتضمّن اختبار AndroidX مجموعة من قواعد JUnit لاستخدامها مع AndroidJUnitRunner. وتوفر قواعد JUnit مرونة أكبر تقلل من التعليمات البرمجية النموذجية المطلوبة في الاختبارات. على سبيل المثال، يمكن استخدامها لبدء نشاط محدد.
قاعدة سيناريو النشاط
توفّر هذه القاعدة اختبارًا وظيفيًا لنشاط واحد. تُطلق القاعدة النشاط الذي تم اختياره قبل كل اختبار تمت إضافة تعليق توضيحي إليه باستخدام @Test
، وكذلك قبل أي طريقة
تمت إضافة تعليقات توضيحية إليها باستخدام @Before
. تُنهي القاعدة النشاط بعد اكتمال
الاختبار ويتم تعليق جميع الطرق التي تمت إضافة تعليقات توضيحية لها بانتهاء @After
. للوصول إلى النشاط المحدّد في منطق الاختبار، قدِّم استدعاءً قابلاً للتنفيذ لـ
ActivityScenarioRule.getScenario().onActivity()
.
يوضح مقتطف الرمز التالي كيفية دمج
ActivityScenarioRule
في منطق الاختبار:
Kotlin
@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. } }
Java
public class MyClassTest { @Rule public ActivityScenarioRule<MyClass> activityRule = new ActivityScenarioRule(MyClass.class); @Test public void myClassMethod_ReturnsTrue() { ... } }
قاعدة اختبار الخدمة
توفّر هذه القاعدة آلية مبسّطة لتشغيل الخدمة قبل الاختبارات وإيقافها قبل إجراء الاختبارات وبعدها. يمكنك بدء الخدمة أو ربطها
بإحدى الطرق المساعدة. يتوقف أو يلغي الربط تلقائيًا بعد اكتمال
الاختبار وانتهاء أي طرق تمت إضافة تعليقات توضيحية لها باستخدام @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() } }
Java
@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 في اختبارات Android، يُرجى الرجوع إلى الموارد التالية.
المستندات
- دليل اختبار الأجزاء لاختبار الأجزاء بمعزل عن بعضها البعض.
- اختبار تخطيط الإنشاء، لاختبار واجهات المستخدم التي تم إنشاؤها باستخدام ميزة Compose.
عيّنات
- Basicعيّن: استخدام بسيط لـ
ActivityScenarioRule
.