הרצת XCTest

במדריך הזה מוסבר איך להכין בדיקת XCTest לבדיקה ב-Firebase Test Lab.

שלב 1: מגדירים את מיקום הנתונים הנגזרים של הפרויקט

‫Xcode ממקם פריטי מידע שנוצרו בתהליך פיתוח התוכנה (artifacts) של iOS שעברו הידור, כולל בדיקות שאתם יוצרים, בספריית Derived Data. אפשר להשאיר את מיקום ברירת המחדל של הספרייה הזו, אבל בדרך כלל כדאי לבחור מקום נגיש יותר לקבצים, במיוחד אם אתם מתכננים להריץ בדיקות עם Test Lab לעיתים קרובות:

  1. פותחים את הפרויקט ב-Xcode.
  2. בסרגל התפריטים של macOS, בוחרים באפשרות File ‏ > הגדרות הפרויקט...‎.
  3. בתפריט הנפתח Derived Data, משנים את הערך מ-מיקום ברירת המחדל ל-Custom Location.
  4. בשדה שמתחת לתפריט הנפתח, בוחרים מיקום שבו Xcode יציג את הבדיקות. (זהו ה-FOLDER_WITH_TEST_OUTPUT שלך)

שלב 2: יוצרים קובץ בדיקה כללי

‫Test Lab מריץ בדיקות יחידה ובדיקות של ממשק המשתמש באמצעות מסגרת XCTest. כדי להריץ את בדיקות ה-XCTest של האפליקציה במכשירי Test Lab, צריך ליצור גרסת build לבדיקה במכשיר iOS גנרי:

  1. בתפריט הנפתח של מכשיר ה-iOS בחלק העליון של חלון סביבת העבודה של Xcode, בוחרים באפשרות Generic iOS Device.
  2. בסרגל התפריטים של macOS, בוחרים באפשרות Product (מוצר) > Build For (פיתוח עבור) > Testing (בדיקה).

לחלופין, אפשר ליצור את ה-XCTest משורת הפקודה. משתמשים בפקודה הבאה בטרמינל:

פרויקט

xcodebuild -project PATH/TO/YOUR_WORKSPACE/PROJECT_NAME.xcodeproj \
   -scheme YOUR_SCHEME \
   -derivedDataPath FOLDER_WITH_TEST_OUTPUT \
   -sdk iphoneos build-for-testing

סביבת עבודה

xcodebuild -workspace PATH/TO/YOUR_WORKSPACE.xcworkspace \
   -scheme YOUR_SCHEME \
   -derivedDataPath FOLDER_WITH_TEST_OUTPUT \
   -sdk iphoneos build-for-testing

שלב 3: חתימה על הבדיקה ואימות

  1. מוודאים שכל פריטי המידע באפליקציה ובבדיקה חתומים. לדוגמה, אפשר לעשות את זה דרך Xcode על ידי ציון הגדרות חתימה כמו פרופיל הקצאה וזהות. מידע נוסף זמין במאמר חתימת קוד של אפל.

  2. מאמתים את חתימת האפליקציה על ידי הפעלת הפקודה codesign --verify --deep --verbose /path/to/MyApp.app, כאשר MyApp הוא שם האפליקציה בתוך התיקייה שחולצה. התשובה משתנה בהתאם לפרויקט. הפלט הצפוי הוא MyApp.app: valid on disk.

  3. אם מריצים XCUITest, צריך לאמת את הבדיקה ואת ה-runner על ידי הרצת הפקודה codesign --verify --deep --verbose /path/to/MyTest-Runner.app, כאשר "MyTest" הוא השם של ה-runner בתוך התיקייה שחולצה. הזמן משתנה בהתאם לפרויקט. הפלט הצפוי הוא MyTest-Runner.app: valid on disk.

שלב 4: אורזים את האפליקציה ובודקים את ההעלאה

  1. אחרי שהבדיקה נוצרת, מכווצים אותה לקובץ ZIP כדי להעלות אותה אל Test Lab:

    cd FOLDER_WITH_TEST_OUTPUT/Build/Products : \
    zip -r MyTests.zip Debug-iphoneos YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun
    

אפשר גם לארוז את הבדיקה על ידי דחיסה ידנית של קובצי הבדיקה:

  1. פותחים את Finder ועוברים אל FOLDER_WITH_TEST_OUTPUT.

  2. פותחים את התיקייה ששם הפרויקט מופיע בתחילת השם שלה, ואז עוברים לתיקייה Build/Products שבתוכה.

  3. בוחרים את התיקיות Debug-iphoneos ו-YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun ודוחסים אותן.

שלב 5: (אופציונלי) מריצים את הבדיקה באופן מקומי

לפני שמריצים את הבדיקה באמצעות Test Lab, אפשר להריץ אותה באופן מקומי במכשיר שמחובר באמצעות USB כדי לבדוק את ההתנהגות שלה:

xcodebuild test-without-building \
    -xctestrun "Derived Data/Build/Products/YOUR_SCHEME.xctestrun" \
    -destination id=your-phone-id

השלבים הבאים

מעלים את הבדיקה ומריצים אותה במסוף Firebase או ב-ה-CLI של gcloud.