Udostępnij za pośrednictwem


Przygotowywanie testów XCUITest do przekazania

Ważne

Program Visual Studio App Center ma zostać wycofany 31 marca 2025 r. Mimo że możesz nadal używać programu Visual Studio App Center do momentu jej pełnego wycofania, istnieje kilka zalecanych alternatyw, do których można rozważyć migrację.

Dowiedz się więcej o osiach czasu pomocy technicznej i alternatywach.

Ten przewodnik zawiera instrukcje dotyczące przygotowywania testów XCUITest na potrzeby przekazywania do testu centrum aplikacji.

Wymagania dotyczące usługi testowej

  • Xcode >= 9.4.1
  • iOS >= 9.0

Uwaga

Program Xcode 12 i iOS 14 są teraz dostępne!

Ograniczenia usługi testowej

  • Tylko przekazana aplikacja może być testowana, a nie interakcje za pośrednictwem aplikacji lub pozostałej części systemu.

Kompilacja do testowania

Aby uruchomić test w usłudze App Center, musisz skompilować aplikację i pakiet XCUITest. Uruchom jedno z dwóch następujących poleceń z katalogu głównego katalogu projektu aplikacji:

# 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 powinna wskazywać .xcodeproj plik, prawdopodobnie zatytułowany PROJECT_NAME.xcodeproj. Jeśli używasz elementu .xcworkspace, użyj polecenia -workspace zamiast -project. YOUR_APP_SCHEME powinien być schematem używanym do kompilowania aplikacji. Domyślnie jest to zwykle nazwa aplikacji.

Program xcrun skompiluje aplikację i pakiet XCUITest do DerivedData/Build katalogu. Aplikacja i pakiet XCUITest będą znajdować się w DerivedData/Build/Products/Debug-iphoneos/ katalogu.

xcrun xcodebuild -list

Przekazywanie testów do centrum aplikacji

Po przygotowaniu zestawu testów skonfiguruj przebieg testu , aby przekazać i uruchomić testy.

Oto przykład sposobu przekazywania pakietu XCUITest do usługi App Center Test.

# 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

Aby zapoznać się z konkretnym przykładem przesyłania testów do usługi App Center, zobacz ten skrypt powłoki, który przesyła testy do centrum aplikacji.

Dodatkowe zrzuty ekranu i kroki testowania

Na końcu każdej metody testu zrzut ekranu jest automatycznie wykonywany dla raportu testowego. Każdy zrzut ekranu jest wyświetlany w raporcie testowym centrum aplikacji jako osobny krok testu.

Działania

Możesz wygenerować dodatkowe etykiety i zrzuty ekranu dla metody testowej, grupując kod testowy przy użyciu firmy Apple Activities. Aby uzyskać więcej informacji, zobacz Grupowanie testów na podkroki za pomocą działań.

Fragment kodu do zawijania kodu testowego w działaniu

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

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

Ręczne zrzuty ekranu

Zrzut ekranu jest generowany automatycznie dla raportu testowego na końcu każdego Activityelementu . Zrzut ekranu można zarejestrować w innym punkcie, Activitywykonując zrzut ekranu przy użyciu ekranu XCUIScreen, a następnie tworząc załącznik z dołączaniem XCTA i dodając go do bieżącego Activityelementu . Ten zrzut ekranu zostanie wyświetlony w raportach testowych centrum aplikacji zamiast domyślnego zrzutu ekranu z końca elementu Activity.

Fragment kodu do generowania i dołączania zrzutu ekranu w działaniu

         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)