XCTest の実行

このガイドでは、Firebase Test Lab でテストを行うために XCTest を準備する方法について説明します。

ステップ 1: プロジェクトの Derived Data の場所を構成する

Xcode は、ビルドしたテストなどのコンパイル済み iOS アーティファクトを、Derived Data ディレクトリに配置します。このディレクトリの場所は、希望に応じてデフォルト設定もそのまま使用できますが、Test Lab でテストを頻繁に実行する場合は、ファイルにアクセスしやすい場所を選択した方が便利です。

  1. Xcode でプロジェクトを開きます。
  2. macOS のメニューバーで、[File] > [Project Settings...] を選択します。
  3. [Derived Data] プルダウンを [Default Location] から [Custom Location] に変更します。
  4. プルダウンの下のフィールドで、Xcode がテストを出力する場所を選択します(この場所が FOLDER_WITH_TEST_OUTPUT になります)。

ステップ 2: 汎用のテストファイルを作成する

Test Lab は、XCTest フレームワークを使用して単体テストと UI テストを実行します。Test Lab デバイスでアプリの XCTest を実施するには、汎用 iOS デバイスでのテスト用に XCTest をビルドします。

  1. Xcode ワークスペース ウィンドウの上部にあるデバイスのプルダウンから、[Generic iOS Device] を選択します。
  2. macOS のメニューバーで、[Product] > [Build For] > [Testing] を選択します。

または、コマンドラインから XCTest をビルドすることもできます。ターミナルで次のコマンドを使用します。

project

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

ステップ 3: テストに署名して検証する

  1. アプリ内のすべてのアーティファクトとテストが署名されていることを確認します。たとえば、Xcode でプロファイルや ID のプロビジョニングなどの署名設定を指定して確認できます。詳細については、Apple コード署名をご覧ください。

  2. codesign --verify --deep --verbose /path/to/MyApp.app を実行してアプリの署名を検証します。ここで、「MyApp」は解凍したフォルダ内にあるアプリの名前です。これはプロジェクトによって異なります。想定される出力は MyApp.app: valid on disk です。

  3. XCUITest を実行している場合は、codesign --verify --deep --verbose /path/to/MyTest-Runner.app を実行してテストとランナーを検証する必要があります。ここで、「MyTest」は解凍したフォルダ内にあるランナーの名前です。これはプロジェクトによって異なります。想定される出力は MyTest-Runner.app: valid on disk です。

ステップ 4: アプリをパッケージ化してアップロードするためのテストを実行する

  1. テストが正常にビルドされたら、Test Lab にアップロードするために圧縮します。

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

テストは、テストファイルを手動で圧縮してパッケージ化することもできます。

  1. Finder を開き、FOLDER_WITH_TEST_OUTPUT に移動します。

  2. プロジェクト名が接頭辞として含まれるフォルダを開き、その中の Build/Products フォルダに移動します。

  3. Debug-iphoneos フォルダと YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun フォルダを選択して圧縮します。

ステップ 5: (省略可)ローカルでテストを実行する

Test Lab でテストを実行する前に、USB 接続されたデバイスを使用してローカルでテストを実行し、その動作の品質を確認します。

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

次のステップ

Firebase コンソールまたは gcloud CLI で、テストをアップロードして実行する。