הרצת XCTest

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

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

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

  1. פותחים פרויקט ב-Xcode.
  2. בסרגל התפריטים של macOS, בוחרים באפשרות File > Project Settings...
  3. משנים את התפריט הנפתח נתונים נגזרים מ-מיקום ברירת מחדל ל-מיקום מותאם אישית.
  4. בשדה שמתחת לתפריט הנפתח, בוחרים מיקום שממנו ה-Xcode יפיק את הפלט. (זה FOLDER_WITH_TEST_OUTPUT שלך)

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

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

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

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

פרויקט

xcodebuild -project PATH/TO/YOUR_WORKSPACE/YOUR_PROJECT.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. מוודאים שכל פריטי המידע שנוצרו בתהליך הפיתוח (Artifact) באפליקציה ובבדיקה חתומים. לדוגמה, אפשר לעשות זאת דרך Xcode על ידי ציון הגדרות החתימה, כמו פרופיל הקצאה וזהות. מידע נוסף זמין במאמר Apple Code Signing.

  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. אחרי שה-build של הבדיקה מסתיים בהצלחה, צריך לדחוס אותו לקובץ 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.