Condividi tramite


Preparazione dei test XCUITest per il caricamento

Importante

Visual Studio App Center è pianificato per il ritiro il 31 marzo 2025. Anche se è possibile continuare a usare Visual Studio App Center fino a quando non viene completamente ritirato, esistono diverse alternative consigliate a cui è possibile considerare la migrazione.

Altre informazioni sulle sequenze temporali e sulle alternative di supporto.

Questa guida fornisce istruzioni per la preparazione dei test XCUITest per il caricamento nel test di App Center.

Requisiti del servizio di test

  • Xcode >= 9.4.1
  • iOS >= 9.0

Limitazioni del servizio di test

  • Solo l'app caricata può essere testata, non le interazioni tramite app o il resto del sistema.

Compilazione per il test

Per eseguire un test in App Center, è necessario compilare l'applicazione e un bundle XCUITest. Eseguire uno dei due comandi seguenti dalla radice della directory del progetto dell'applicazione:

# How to build a xcodeproj
rm -rf DerivedData
xcrun xcodebuild build-for-testing \
  -configuration Debug \
  -project YOUR_XCODEPROJ \
  -sdk iphoneos \
  -scheme YOUR_APP_SCHEME \
  -derivedDataPath DerivedData

YOUR_XCODEPROJ dovrebbe puntare a un .xcodeproj file, probabilmente denominato PROJECT_NAME.xcodeproj. Se si usa un .xcworkspaceoggetto , usare -workspace anziché -project. YOUR_APP_SCHEME deve essere lo schema usato per compilare l'applicazione. Per impostazione predefinita, è in genere il nome dell'applicazione.

L'xcrun compilerà l'app e un bundle XCUITest nella DerivedData/Build directory. L'app e il bundle XCUITest si troveranno nella DerivedData/Build/Products/Debug-iphoneos/ directory.

xcrun xcodebuild -list

Caricamento di test in App Center

Dopo aver preparato un gruppo di test, configurare successivamente un'esecuzione di test per caricare ed eseguire i test.

Ecco un esempio di come caricare la suite XCUITest nel test di App Center.

# Upload your test to App Center
appcenter test run xcuitest \
  --app "APP_ID" \
  --devices "DEVICE_SET_ID" \
  --test-series "main" \
  --locale "en_US" \
  --build-dir DerivedData/Build/Products/Debug-iphoneos

Per un esempio concreto di invio di test ad App Center, vedere questo script della shell che invia test ad App Center.

Screenshot aggiuntivi e passaggi di test

Alla fine di ogni metodo di test viene acquisito automaticamente uno screenshot per il report di test. Ogni screenshot viene visualizzato nel report di test di App Center come passaggio di test separato.

Attività

È possibile generare etichette e screenshot aggiuntivi per un metodo di test raggruppando il codice di test usando apple.Activities Per altre informazioni, vedere Raggruppamento di test in passaggi secondari con le attività.

Frammento di codice per eseguire il wrapping del codice di test in un'attività

    [XCTContext
     runActivityNamed:title
     block:^(id<XCTActivity>  _Nonnull activity) {
         // test code
     }];

        XCTContext.runActivity(named: title) { (activity) in
            // test code
        }

Screenshot manuali

Uno screenshot viene generato automaticamente per il report di test alla fine di ogni Activity. È possibile registrare uno screenshot in un punto diverso all'interno di un Activity oggetto creando uno screenshot usando XCUIScreen, quindi creando un allegato con XCTAttachment e aggiungendolo all'oggetto corrente Activity. Questo screenshot verrà visualizzato nei report di test di App Center anziché nello screenshot predefinito dalla fine di Activity.

Frammento di codice per generare e allegare uno screenshot in un'attività

         XCUIScreenshot *screenshot = [[XCUIScreen mainScreen] screenshot];
         XCTAttachment *attachment;
         attachment = [XCTAttachment attachmentWithScreenshot:screenshot];
         [attachment setLifetime:XCTAttachmentLifetimeKeepAlways];
         [activity addAttachment:attachment];
            let screenshot = XCUIScreen.main.screenshot()
            let attachment = XCTAttachment(screenshot: screenshot)
            attachment.lifetime = .keepAlways
            activity.add(attachment)