現在、jenkins での iOS テストを自動化しています。これまでのところ、単体テストの実行、OCUnit の JUnit への変換、および Cobertura 形式でのコード カバレッジの生成に問題はありませんでした (多くのグーグル検索はありましたが、難しい問題はありませんでした)。
ただし、UIAutomation ジョブを作成するときに行き詰まります。テストは正常に実行されています (instruments
コマンド ラインからの呼び出し)。junit レポートの生成はトリッキーでしたが、可能でした。問題は、UIAutomation の実行時にコード カバレッジ ファイルが生成されないことです。
それらを生成する可能性はありますか?そうでない場合は、その理由を説明していただけますか?
私がこれまでに試したこと:
- iOS シミュレーターで既に実行中のアプリケーションに UIAutomation をアタッチします。
- これは不可能に思えます。実行中のアプリケーションが計測器によって強制終了され、新しいインスタンスが再起動されるか、不可解なエラー メッセージが出力されます。
- osascript と の組み合わせを使用して、js スクリプトの最後でシミュレーターを終了し
UIAHost. performTaskWithPathArgumentsTimeout
ます。- アプリケーションは正常に終了しましたが、カバレッジは生成されませんでした。
編集
別のフレームワークでいくつかのテストを行った後、シミュレーターを終了するだけでは不十分であることに気付きましたexit()
。アプリケーションから明示的に呼び出す必要があります。UI オートメーションの場合、これは少しトリッキーですが、アプリケーション スキームを宣言できます。たとえばmy-app://exit
、MobileSafari を使用してUIAHost.performTaskWithPathArgumentsTimeout
. これでファイルを生成するのに十分かどうかを確認します。