Executar um XCTest

Este guia descreve como preparar um XCTest para testes no Firebase Test Lab.

Etapa 1: configurar o local dos dados derivados de seu projeto

O Xcode coloca os elementos do iOS compilados, incluindo todos os testes que você cria, em um diretório de dados derivados. É possível manter o local padrão para esse diretório, mas é útil escolher um local mais acessível para os arquivos, especialmente se você pensa executar testes pelo Test Lab com frequência:

  1. Abra seu projeto no Xcode.
  2. Selecione File > Project Settings… na barra de menus do macOS.
  3. Altere o menu suspenso Derived Data de Default Location para Custom Location.
  4. No campo abaixo do menu suspenso, selecione um local onde o Xcode possa guardar os testes. Esta é sua pasta FOLDER_WITH_TEST_OUTPUT.

Etapa 2: criar um arquivo de teste genérico

O Test Lab executa testes de unidade e de interface usando o framework XCTest. Para executar os XCTests do seu app em dispositivos do Test Lab, crie-os para que sejam testados em um dispositivo iOS genérico:

  1. No menu suspenso do dispositivo, na parte de cima da janela do espaço de trabalho do Xcode, selecione Generic iOS Device.
  2. Na barra de menu do macOS, selecione Product > Build For > Testing.

Como alternativa, você pode criar o XCTest na linha de comando. Use o seguinte comando em um terminal:

projeto

xcodebuild -project PATH/TO/YOUR_WORKSPACE/YOUR_PROJECT.xcodeproj \
   -scheme YOUR_SCHEME \
   -derivedDataPath FOLDER_WITH_TEST_OUTPUT \
   -sdk iphoneos build-for-testing

workspace

xcodebuild -workspace PATH/TO/YOUR_WORKSPACE.xcworkspace \
   -scheme YOUR_SCHEME \
   -derivedDataPath FOLDER_WITH_TEST_OUTPUT \
   -sdk iphoneos build-for-testing

Etapa 3: assinar o teste e verificar

  1. Verifique se todos os artefatos no app e teste estão assinados. Por exemplo, é possível fazer isso pelo Xcode especificando configurações de assinatura, como provisionamento de perfil e identidade. Para mais informações, consulte Assinatura de código da Apple.

  2. Verifique a assinatura do app executando codesign --verify --deep --verbose /path/to/MyApp.app, em que "MyApp" é o nome do app dentro da pasta descompactada. Isso varia de acordo com o projeto. A saída esperada é MyApp.app: valid on disk.

  3. Se você estiver executando um XCUITest, será necessário verificar o teste e o executor executando codesign --verify --deep --verbose /path/to/MyTest-Runner.app, em que "MyTest" é o nome do executor dentro da pasta descompactada. Isso varia de acordo com o projeto. A saída esperada é MyTest-Runner.app: valid on disk.

Etapa 4: criar um pacote do app e testar o upload

  1. Depois de criar o projeto, faça upload para o Test Lab:

    cd FOLDER_WITH_TEST_OUTPUT/Build/Products : \
    zip -r MyTests.zip Debug-iphoneos YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun
    

Também é possível criar um pacote do teste compactando os arquivos de teste manualmente:

  1. Abra o Finder e navegue até FOLDER_WITH_TEST_OUTPUT.

  2. Abra a pasta que tem o nome do projeto como prefixo e navegue até a pasta Build/Products.

  3. Selecione as pastas Debug-iphoneos e YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun e compacte-as.

Etapa 5: executar o teste no local (opcional)

Antes de executar seu teste com o Test Lab, é possível executá-lo localmente com um dispositivo conectado via USB para verificar a qualidade do comportamento:

xcodebuild test-without-building \
    -xctestrun "Derived Data/Build/Products/YOUR_SCHEME.xctestrun" \
    -destination id=your-phone-id

Próximas etapas

Faça upload e execute o teste no Console do Firebase ou na CLI gcloud.