Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Questa guida descrive come preparare un XCTest per il test in
Firebase Test Lab.
Passaggio 1: configura la posizione dei dati derivati del progetto
Xcode inserisce gli artefatti iOS compilati, inclusi i test che crei, in una directory Derived Data. Se vuoi, puoi mantenere la posizione predefinita per la directory, ma spesso è utile scegliere una posizione più facilmente accessibile
per i file, soprattutto se prevedi di eseguire spesso test con Test Lab:
Apri il progetto in Xcode.
Nella barra dei menu di macOS, seleziona
File > Impostazioni progetto…
Modifica il menu a discesa Dati derivati da
Posizione predefinita a Posizione personalizzata.
Nel campo sotto il menu a discesa, seleziona una posizione in cui Xcode possa generare
i test. (Questo è il tuo
FOLDER_WITH_TEST_OUTPUT)
Passaggio 2: crea un file di test generico
Test Lab esegue test delle unità e della UI utilizzando il framework
XCTest.
Per eseguire gli XCTest della tua app su dispositivi Test Lab, creala per il test su un
dispositivo iOS generico:
Dal menu a discesa del dispositivo nella parte superiore della finestra dell'area di lavoro Xcode, seleziona
Generic iOS Device.
Nella barra dei menu di macOS, seleziona
Prodotto > Compila per > Test.
In alternativa, puoi creare il tuo XCTest dalla riga di comando.
Utilizza questo comando in un terminale:
Assicurati che tutti gli artefatti nell'app e nel test siano firmati. Ad esempio, puoi
farlo tramite Xcode specificando le impostazioni di firma come il profilo di provisioning
e l'identità. Per ulteriori informazioni, consulta la sezione Firma del codice Apple.
Verifica la firma dell'app eseguendo
codesign --verify --deep --verbose /path/to/MyApp.app dove "MyApp" è il
nome dell'app all'interno della cartella decompressa. Varia in base al progetto.
L'output previsto è MyApp.app: valid on disk.
Se esegui un test XCUITest, devi verificare il test e il runner
eseguendo codesign --verify --deep --verbose /path/to/MyTest-Runner.app, dove
"MyTest" è il nome del runner all'interno della cartella decompressa. Varia in base
a ogni progetto. L'output previsto è MyTest-Runner.app: valid on disk.
Passaggio 4: crea il pacchetto dell'app e testalo per il caricamento
Una volta creato correttamente il test, comprimilo in formato zip per caricarlo su Test Lab:
cd FOLDER_WITH_TEST_OUTPUT/Build/Products : \
zip -r MyTests.zip Debug-iphoneos YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun
Puoi anche comprimere manualmente i file di test per creare un pacchetto di test:
Apri il Finder e vai a
FOLDER_WITH_TEST_OUTPUT.
Apri la cartella che ha il nome del progetto come prefisso, quindi vai alla cartella
Build/Products al suo interno.
Seleziona le cartelle Debug-iphoneos e
YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun
e poi comprimile.
Passaggio 5: (facoltativo) esegui il test in locale
Prima di eseguire il test con Test Lab, puoi eseguirlo localmente con
un dispositivo connesso tramite USB per verificare la qualità del suo comportamento:
[null,null,["Ultimo aggiornamento 2025-08-16 UTC."],[],[],null,["# Run an XCTest\n\n\u003cbr /\u003e\n\nThis guide describes how to prepare an XCTest for testing in\nFirebase Test Lab.\n\n**Step 1**: Configure your project's Derived Data location\n----------------------------------------------------------\n\nXcode places compiled iOS artifacts, including any tests you build, in a Derived\nData directory. It is possible to keep the default location for that directory,\nif you'd like, but it's often helpful to choose a more easily-accessible place\nfor the files, especially if you're going to be running tests with Test Lab\noften:\n\n1. Open your project in Xcode.\n2. In the macOS menu bar, select **File** \\\u003e **Project Settings...**\n3. Change the **Derived Data** drop-down from **Default Location** to **Custom Location**.\n4. In the field below the drop-down, select a location for Xcode to output your tests to. (This is your \u003cvar class=\"edit\" scope=\"FOLDER_WITH_TEST_OUTPUT\" translate=\"no\"\u003eFOLDER_WITH_TEST_OUTPUT\u003c/var\u003e)\n\n**Step 2**: Build a generic test file\n-------------------------------------\n\nTest Lab runs unit tests and UI tests using the\n[XCTest](https://developer.apple.com/documentation/xctest) framework.\nTo run your app's XCTests on Test Lab devices, build it for testing on a\nGeneric iOS Device:\n\n1. From the device drop-down at the top of your Xcode workspace window, select **Generic iOS Device**.\n2. In the macOS menu bar, select **Product** \\\u003e **Build For** \\\u003e **Testing**.\n\nAs an alternative, you can build your XCTest from the command line.\nUse the following command in a terminal: \n\n#### project\n\n```\nxcodebuild -project PATH/TO/YOUR_WORKSPACE/YOUR_PROJECT.xcodeproj \\\n -scheme YOUR_SCHEME \\\n -derivedDataPath FOLDER_WITH_TEST_OUTPUT \\\n -sdk iphoneos build-for-testing\n```\n\n#### workspace\n\n```\nxcodebuild -workspace PATH/TO/YOUR_WORKSPACE.xcworkspace \\\n -scheme YOUR_SCHEME \\\n -derivedDataPath FOLDER_WITH_TEST_OUTPUT \\\n -sdk iphoneos build-for-testing\n```\n\n**Step 3**: Sign your test and verify\n-------------------------------------\n\n1. Make sure all artifacts in the app and test are signed. For example, you can\n do this through Xcode by specifying signing settings like provisioning profile\n and identity. For more information, see\n [Apple Code Signing](https://developer.apple.com/support/code-signing/).\n\n | **Note** : Test Lab re-signs your app with its own provisioning profile and certificate.\n2. Verify app signature by running\n `codesign --verify --deep --verbose /path/to/MyApp.app` where \"MyApp\" is the\n name of the app inside the unzipped folder. This varies for each project.\n Expected output is `MyApp.app: valid on disk`.\n\n3. If you are running an XCUITest, then you need to verify the test and runner\n by running `codesign --verify --deep --verbose /path/to/MyTest-Runner.app` where\n \"MyTest\" is the name of the runner inside the unzipped folder. This varies for\n each project. Expected output is `MyTest-Runner.app: valid on disk`.\n\n**Step 4**: Package your app and test for uploading\n---------------------------------------------------\n\n1. After your test successfully builds, zip it for upload to Test Lab:\n\n ```\n cd FOLDER_WITH_TEST_OUTPUT/Build/Products : \\\n zip -r MyTests.zip Debug-iphoneos YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun\n ```\n\nYou can also package up your test by compressing the test files manually:\n\n1. Open Finder and navigate to\n \u003cvar class=\"edit\" scope=\"FOLDER_WITH_TEST_OUTPUT\" translate=\"no\"\u003eFOLDER_WITH_TEST_OUTPUT\u003c/var\u003e.\n\n2. Open the folder that has your project name as a prefix, then navigate to\n `Build/Products` folder inside.\n\n3. Select the folders `Debug-iphoneos` and\n \u003cvar class=\"edit\" scope=\"YOUR_SCHEME\" translate=\"no\"\u003eYOUR_SCHEME\u003c/var\u003e`_iphoneos`\u003cvar class=\"edit\" scope=\"DEPLOYMENT_TARGET\" translate=\"no\"\u003eDEPLOYMENT_TARGET\u003c/var\u003e`-arm64.xctestrun`\n and then compress them.\n\n**Step 5**: (Optional) Run your test locally\n--------------------------------------------\n\nBefore running your test with Test Lab, you can run it locally with\na USB-connected device to quality check its behavior: \n\n```\nxcodebuild test-without-building \\\n -xctestrun \"Derived Data/Build/Products/YOUR_SCHEME.xctestrun\" \\\n -destination id=your-phone-id\n```\n\nNext steps\n----------\n\nUpload and run your test in the [Firebase console](/docs/test-lab/ios/firebase-console)\nor the [gcloud CLI](/docs/test-lab/ios/command-line)."]]