בדיקת AndroidX כוללת קבוצה של כללי JUnit לשימוש עם AndroidJUnitRunner. כללי JUnit מעניקים יותר גמישות ומצמצמים את נדרש קוד סטנדרטי (boilerplate) בבדיקות. לדוגמה, אפשר להשתמש בהם כדי פעילות ספציפית.
תרחיש הפעילות
הכלל הזה מספק בדיקה פונקציונליות של פעילות יחידה. הכלל מופעל
הפעילות שנבחרה לפני כל בדיקה שנוספה באמצעות @Test
, וגם לפניה
כל method שמסומנת ב-@Before
. הכלל מסיים את הפעילות אחרי
הבדיקות שהושלמו וכל השיטות שנוספו להן הערות עם סיום ה-@After
. כדי לגשת אל
פעילות בלוגיקת הבדיקה, ספק קריאה חוזרת (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 בבדיקות Android, אפשר לעיין ב במקורות המידע הבאים.
מסמכים
- המדריך בדיקה של המקטעים כדי לבדוק מקטעים בנפרד.
- בדיקת פריסת הכתיבה, כדי לבדוק ממשקי משתמש שנוצרו באמצעות 'כתיבה'.
דוגמיות
- BasicSample: שימוש פשוט ב-
ActivityScenarioRule
.