私はUIテストの束をもう一度得るためにかなり退屈なプロセスを経ていますが、各テストを実行するには、XCodeがシミュレータでアプリケーションを2回起動するように見えます。一度は何のためにもしなくても、次にテストを実行する場所については別の時間にしてください。XcodeはUIテストを実行するためにアプリを2回起動するのはなぜですか?
これが発生する原因となる設定に問題がありますか、またはこの動作が意図されていますか?
私はUIテストの束をもう一度得るためにかなり退屈なプロセスを経ていますが、各テストを実行するには、XCodeがシミュレータでアプリケーションを2回起動するように見えます。一度は何のためにもしなくても、次にテストを実行する場所については別の時間にしてください。XcodeはUIテストを実行するためにアプリを2回起動するのはなぜですか?
これが発生する原因となる設定に問題がありますか、またはこの動作が意図されていますか?
これは意図した動作です。あなたが見ているのは実際には同じアプリが2回ではなく2つの異なるアプリを起動するわけではありません:
最初の起動はUITestRunnerアプリです。 UITestを起動すると、XcodeはあなたのアプリとやりとりするUITestRunnerアプリを構築します。このランナーアプリは、UITestsが単体テストとは異なる働きをするために必要です。
ユニットテストは、アプリの範囲内で機能します。言い換えれば、彼らはあなたのアプリケーションのコード、変数、状態のすべてにアクセスできます。そのため、単体テストを実行するときにあなたのアプリが起動されます。
UITestsあなたのアプリのようにあなたのアプリを「使う」。彼らはあなたのアプリのコードにアクセスすることはありません。彼らができることは、ユーザーインターフェイスを使ってアプリとやりとりすることだけです。 UITestsはアプリとは別のプロセスで実行されます。これがUITestRunnerAppの役割です。あなたのアプリが対応できるイベントを合成します。つまり、UITestRunnerAppは実際のユーザーをシミュレートします。
だから、UITestを起動すると、実際には2つのアプリが起動しています。最初にUITestRunnerアプリ(すぐにバックグラウンドに送信されます)とアプリがあります。