Questa guida descrive come eseguire un test XCTest iOS utilizzando la CLI gcloud beta
device-run e trovare i risultati nella console Google Cloud . Presuppone che tu disponga di un account e di un progetto Google Cloud .
Per utilizzare la CLI device-run, devi fornire l'ID progetto Google Cloud. Consulta gcloud beta device-run per un riepilogo dei comandi.
Prima di iniziare
Questi passaggi presuppongono che tu abbia già:
- Creazione di un progetto Google Cloud .
- Configura la piattaforma per dispositivi per sviluppatori seguendo la Guida rapida.
- Autenticato con
gcloudnel terminale. - Ho esaminato la panoramica di Device Run per informazioni generali.
- Hai compilato i test e li hai inseriti in un file ZIP.
Passaggio 1: Scegli i tipi di dispositivi
Utilizzando la CLI device-run, i test iOS possono essere eseguiti su dispositivi fisici disponibili. Per visualizzare l'elenco completo dei dispositivi disponibili, visita il
catalogo
interattivo dei dispositivi o esegui:
gcloud beta device-run devices list
Output di esempio:
ID MAKE NAME MODEL HARDWARE_TYPE OS_VERSION CAPACITY AVAILABILITY PRODUCTS
iphonese3-18-4 Apple iPhone SE 3 iphonese3 PHYSICAL 18.4 NONE NONE Automation
iphonese3-26-3 Apple iPhone SE 3 iphonese3 PHYSICAL 26.3 NONE NONE Automation
Consulta il catalogo
dei dispositivi per scoprire come
filtrare questo elenco. Per scegliere come target un dispositivo specifico per l'esecuzione del test, utilizza
il relativo ID (ad es. iphonese3-18-4) nel comando di invio.
Passaggio 2: Preparare e creare il pacchetto XCTest
Prima di eseguire i test, devi compilarli, assicurarti che siano firmati, verificare
le firme del codice e comprimere gli artefatti risultanti in un file ZIP
contenente la configurazione .xctestrun e i bundle di test dell'applicazione.
1. Crea i test per i dispositivi iOS fisici
Apri il progetto in Xcode e crea l'app e i target di test per il test:
- Assicurati che la firma del codice sia configurata correttamente in Xcode (specificando un profilo di provisioning e un'identità sviluppatore validi) sia per il target dell'app sia per il target del test runner.
Crea una build per i test utilizzando Xcode (Prodotto > Crea per > Test) o con
xcodebuild.Per uno spazio di lavoro:
xcodebuild build-for-testing \ -workspace YourProject.xcworkspace \ -scheme YourScheme \ -derivedDataPath ./build \ -destination "generic/platform=iOS"Per un progetto autonomo:
xcodebuild build-for-testing \ -project YourProject.xcodeproj \ -scheme YourScheme \ -derivedDataPath ./build \ -destination "generic/platform=iOS"
Vengono generati i prodotti di build in: ./build/Build/Products
2. Verificare i prodotti e le firme della build
Dopo la creazione, verifica che l'applicazione, il runner e il manifest .xctestrun
siano stati generati in ./build/Build/Products/. Se hai eseguito la firma localmente, puoi
verificare le firme del bundle utilizzando codesign:
Verifica l'app bundle:
codesign --verify --deep --verbose ./build/Build/Products/Debug-iphoneos/YourApp.appOutput previsto:
YourApp.app: valid on diskSe esegui un test XCUITest, verifica anche il bundle del test runner:
codesign --verify --deep --verbose ./build/Build/Products/Debug-iphoneos/YourApp-Runner.appOutput previsto:
YourApp-Runner.app: valid on disk
3. Crea l'archivio ZIP
Comprimi sia la directory Debug-iphoneos sia il file .xctestrun che si trovano
nella cartella dei prodotti di output della build in un unico archivio ZIP.
Esegui questo comando dalla directory dei prodotti di build:
cd ./build/Build/Products
zip -r MyTests.zip Debug-iphoneos *.xctestrun
Viene creato il pacchetto MyTests.zip pronto per essere utilizzato con il flag --test.
Passaggio 3: Esegui XCTest
Tieni presente che questi flag sono obbligatori:
- Dispositivo: specifica un dispositivo utilizzando
--device:--device iphonese3-18-4 - Test: specifica il file zip di test utilizzando
--test:--test ./MyTests.zip
Per eseguire XCTest, utilizza il comando gcloud beta device-run sessions submit xctest. Devi fornire il file ZIP di test (MyTests.zip) compilato nel
passaggio precedente.
Per eseguire una sessione di test di base:
gcloud beta device-run sessions submit xctest \
--device iphonese3-18-4 \
--test ./MyTests.zip
Quando inizia l'esecuzione, la CLI mostra l'ID sessione creato e la destinazione Cloud Storage in cui verranno archiviati i risultati:
Creating session [session-ee78b0ed] in location [global].
Result files will be stored at [https://console.cloud.google.com/storage/browser/BUCKET_NAME/automation/sessions/session-ee78b0ed/].
Waiting for session [session-ee78b0ed] to complete....
Passaggio 4: Configurare l'esecuzione test
Puoi personalizzare l'esecuzione del test utilizzando i seguenti flag facoltativi
(anche se è richiesta almeno un'istanza del flag --device):
- Più dispositivi: specifica il flag
--devicepiù volte per eseguire lo stesso test su più dispositivi contemporaneamente:--device iphonese3-18-4 --device iphonese3-26-3o--device iphonese3-18-4,iphonese3-26-3 - App aggiuntive: installa uno o più pacchetti
.ipaprima di avviare il test utilizzando--additional-apps:--additional-apps=/path/to/AdditionalApp.ipa - File
.xctestrunpersonalizzato: passa un file di configurazione personalizzato con--xctestrun-file:--xctestrun-file=/path/to/CustomTests.xctestrun - Timeout test: limita la durata dell'esecuzione:
--xctest-timeout=10m(l'intervallo valido è da1ma1he il valore predefinito è5m). - Etichette: collega metadati definiti dall'utente alla sessione:
--labels=env=staging,owner=my-team - Esegui il push dei file sul dispositivo: esegui il push dei file nel container di dati dell'app prima dell'esecuzione del test:
--other-files-to-push=/tmp/data.txt=com.example.app:/Documents/data.txt - Recupera file dal dispositivo: recupera i file dal contenitore dei dati dell'app dopo l'esecuzione del test:
--paths-to-pull=com.example.app:/Documents/output.txt - Nuovi tentativi di test instabili: imposta il numero massimo di tentativi per eseguire di nuovo i test instabili:
--flaky-test-attempts=3(il valore predefinito è 1 tentativo). - Bucket Cloud Storage personalizzato: specifica un bucket Cloud Storage personalizzato
per input e output:
--bucket-name=my-custom-bucket(il valore predefinito èPROJECT_ID-devicerun). - Poiché il caricamento di file ZIP o IPA di grandi dimensioni può richiedere molto tempo, puoi
fare riferimento direttamente ai tuoi file utilizzando i relativi percorsi
gs://di Cloud Storage per risparmiare tempo di caricamento.
Passaggio 5: Esplorare e gestire l'esecuzione del test
Puoi monitorare le esecuzioni attive e gestire le sessioni storiche utilizzando questi comandi:
- Describe session: esegui query sullo stato di avanzamento in tempo reale o sui risultati finali di una sessione:
gcloud beta device-run sessions describe SESSION_IDAggiungi--fullper visualizzare i dettagli completi, inclusi le allocazioni dei dispositivi, gli ID esecuzione e i percorsi degli artefatti di Cloud Storage. - Elenca sessioni: visualizza le tue corse recenti:
gcloud beta device-run sessions list --limit=10 - Annulla sessione: interrompi una sessione di test in esecuzione:
gcloud beta device-run sessions cancel SESSION_ID - Annulla operazione: interrompi un'operazione in attesa o attiva:
gcloud beta device-run operations cancel OPERATION_ID
Passaggi successivi
Poi, trova e analizza i log.