בדיקת האפליקציה באמצעות כללי בדיקה של ARCore

מכשירי XR שמתאימים לשימוש
ההנחיות האלה יעזרו לכם ליצור חוויות למכשירי XR מהסוגים הבאים.
משקפי XR
משקפי AR חוטיים
משקפי אודיו ותצוגה

אפליקציות של מציאות רבודה (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()
}

בדרך כלל, בדיקת יחידה כוללת את השלבים הבאים:

  1. כדי להגדיר את הבדיקה, משתמשים בArCoreTestRule כדי להחדיר נתוני בדיקה. האובייקט הזה מכיל את נתוני הסביבה שהאפליקציה קוראת מהסשן. כדי לוודא שהמערכת מוכנה לביצוע הבדיקה, צריך להשתמש ב-TestScope.advanceUntilIdle. בדוגמה הזו, היד הימנית מופעלת, ונתוני התנוחה משמשים לאכלוס נתוני מפרקי הידיים.
  2. לאחר מכן, מבצעים את הבדיקה. האפליקציה לא צריכה התנהגות מיוחדת כדי להשתמש בנתונים שהוזרקו: Session משתמש בנתונים שהוזרקו לתוך ArCoreTestRule.
  3. לבסוף, בודקים את התוצאות.

מקורות מידע נוספים

למידע נוסף על בדיקות ב-Android, אפשר לעיין במקורות המידע הבאים: