はじめに
Patrolをプロジェクトに導入し、iOSのセットアップをしていたのですが、はまった箇所が二つあったので記事にします。
前提
- 2026/05/25時点の記事で、使用してるpatrolのバージョンは4.3.1です
- Flavorを使用しています
その影響か、若干、公式ドキュメントと設定を変えないとダメな箇所がありました。
xcode_backend buildとxcode_backend embed_and_thinは不要だった
Patrolの公式ドキュメントだと、
RunnerUITestsのBuild Phasesに、xcode_backend buildとxcode_backend embed_and_thinを追加すると書いてありますが、追加するとビルドエラーが発生しました。
AIに聞くと下記のように書いてました。
Flutter 3.24〜3.38前後のバージョンにおいて、RunnerUITests(Patrolが使用するテストターゲット)に Flutterの embed_and_thin(フレームワークの埋め込みスクリプト)が走る設定になっていると、スクリプトが参照する環境変数がテストターゲット側に存在しないために内部でヌルポ(Nullクラッシュ)を起こすという、Flutterツール側のバグまたは競合が原因です。
本来、Patrolなどの統合テストでは Runner(アプリ本体)のみが Flutter フレームワークを埋め込めばよく、RunnerUITests 側にこのビルドフェーズ(Build Phases)は不要です。
ただ、公式に追加すると書いてあるのでAIが間違っているのだろうと、ドキュメントを最後まで疑わなかったのですが、試しに、xcode_backend buildとxcode_backend embed_and_thinを削除すると動きました。
Flavorを使用しているときにSimulatorのCloneをオフにする方法
テストの並列実行がONになっていると、テストに使用するSimulatorをCloneして、CloneしたSimulatorでテストを行います。
この設定で動かすと、テストに使用するオリジナルのSimulatorが閉じてしまうので、不便を感じました。
公式のドキュメントにはCloneしないように設定する方法も書いてあり、同じように設定したのですが、Cloneがオフにならないという問題がありました。
結論として、Flavorを使っているときはテストで使用するSchemaの設定を変更する必要がありました。


