הרצת 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 מריץ בדיקות יחידה ובדיקות ממשק משתמש באמצעות ה-framework של XCTest. כדי להריץ את בדיקות ה-XCTest של האפליקציה במכשירי Test Lab, צריך ליצור גרסת build לבדיקה במכשיר iOS גנרי:

  1. בתפריט הנפתח של המכשיר בחלק העליון של החלון של סביבת העבודה של Xcode, בוחרים באפשרות General iOS Device (מכשיר iOS כללי).
  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.

  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.