אפליקציות של מציאות רבודה (AR) מסתמכות לעיתים קרובות על מצבים ספציפיים בעולם האמיתי כדי לפעול. לדוגמה, יכול להיות שהאפליקציה שלכם תדרוש זיהוי של משטח, כמו שולחן, כדי להציב עליו לוח משחק וירטואלי. כדי לבדוק את האפליקציה בתרחישים שונים, אפשר להשתמש בממשקי ה-API של כלל הבדיקה של ARCore כדי לכתוב בדיקות בסביבת בדיקה מבוקרת של ARCore. ממשקי ה-API מטפלים בהגדרת הסשן ובמצב שלו, כך שאתם יכולים להתמקד בבדיקת הלוגיקה המרכזית של האפליקציה.
הוספת תלות של הפרויקט בספריות
כדי להשתמש בכלל הבדיקה של ARCore, מוסיפים את התלויות האלה לקובץ build.gradle
של האפליקציה:
Kotlin
dependencies { testImplementation("androidx.xr.arcore:arcore-testing:1.0.0-alpha14") }
מגניב
dependencies { testImplementation "androidx.xr.arcore:arcore-testing:1.0.0-alpha14" }
אם האפליקציה תלויה ב-XR SceneCore, צריך לכלול גם את התלות XR SceneCore testing:
Kotlin
dependencies { testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha15") }
מגניב
dependencies { testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha15" }
הגדרת כלל הבדיקה
בבדיקת JUnit, משתמשים בAndroidJUnit4 test runner כדי להגדיר בדיקה:
@Rule @JvmField val arCoreTestRule = ArCoreTestRule() private lateinit var activityController: ActivityController<ComponentActivity> private lateinit var activity: ComponentActivity private lateinit var testDispatcher: TestDispatcher private lateinit var testScope: TestScope private lateinit var session: Session @Before fun setUp() { testDispatcher = StandardTestDispatcher() testScope = TestScope(testDispatcher) activityController = Robolectric.buildActivity(ComponentActivity::class.java) activity = activityController.get() // Set up the activity permissions. shadowOf(activity.application).grantPermissions(HAND_TRACKING) activityController.create().start().resume() val sessionCreateResult = Session.create(activity = activity, coroutineContext = testDispatcher) session = (sessionCreateResult as SessionCreateSuccess).session // Configure the session. session.configure(session.config.copy(handTracking = HandTrackingMode.BOTH)) }
בשלב @Before, מגדירים את סביבת הבדיקה, כולל ההרשאות הנדרשות והגדרת הסשן.
יצירת מקרי בדיקה
יוצרים תרחיש בדיקה כדי לבדוק תרחיש מסוים. בדוגמה הזו, אנחנו בודקים אם גלאי של תנועת יד למעקב ידיים פועל עם נתוני הבדיקה שלנו:
@Test fun test_thumbsUp() = runTest(testDispatcher) { arCoreTestRule.rightHand.isVisible = true arCoreTestRule.rightHand.handJointMap = gestureThumbsUp advanceUntilIdle() val handState = Hand.right(session)?.state?.value ?: fail("Did not detect a right hand") val isThumbsUp = detectThumbsUp(handState) assertThat(isThumbsUp).isTrue() }
בדרך כלל, בדיקת יחידה כוללת את השלבים הבאים:
- כדי להגדיר את הבדיקה, משתמשים ב
ArCoreTestRuleכדי להחדיר נתוני בדיקה. האובייקט הזה מכיל את נתוני הסביבה שהאפליקציה קוראת מהסשן. כדי לוודא שהמערכת מוכנה לביצוע הבדיקה, צריך להשתמש ב-TestScope.advanceUntilIdle. בדוגמה הזו, היד הימנית מופעלת, ונתוני התנוחה משמשים לאכלוס נתוני מפרקי הידיים. - לאחר מכן, מבצעים את הבדיקה. האפליקציה לא צריכה התנהגות מיוחדת כדי להשתמש בנתונים שהוזרקו:
Sessionמשתמש בנתונים שהוזרקו לתוךArCoreTestRule. - לבסוף, בודקים את התוצאות.
מקורות מידע נוספים
למידע נוסף על בדיקות ב-Android, אפשר לעיין במקורות המידע הבאים: