يتضمّن اختبار 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 لاختبار واجهات المستخدم التي تم إنشاؤها باستخدام ميزة Compose
نماذج
- BasicSample: هي استخدام بسيط لـ
ActivityScenarioRule
.