XcodeのUITest実行時にtest runner appが見つからないとワーニングが出て実行できないときの対処法


はじめに

新規プロジェクトを作って UITest のターゲットを追加したときは
ちゃんと実行できるのでおそらく古いアプリで起こるのだと思う。

通常通りに UITest のターゲットを追加してただ UItests.m
testExample を実行しようとしたときに下記ワーニングが出て
UITest を実行できないことがあった。

初期状態のUItestコード

uitestUITests.m
- (void)testExample {
    // Use recording to get started writing UI tests.
    // Use XCTAssert and related functions to verify your tests produce the correct results.
}

ワーニングはこういうもの。
Unable to find test runner app containing test bundle path ・・・

パスをたどってみると確かに UITests-Runner.app がない。

Build Settings とかを比較していたときに
たまたま差分を見つけ対処法がわかったので備忘録。
と言っても多分そんなに多いケースではないと思う。

環境

  • Xcode 8.0 (8A218a)
  • OS X El Capitan 10.11.6
  • Objective-C

対処法

Xcode で UITest の Target を選択し,
Build Settings を選択。
検索窓に Wrapper Extension を入力して検索。
これが app になっていた。

正しく実行できるアプリで確認してみると, xctest になっていた。

もしかしてこれか?と修正して実行してみると成功した。

パスをたどってみると確かに UITests-Runner.app が生成されていた。

おわりに

こういう警告でやりたいこと止まると時間がもったいなく感じる。
でもなんと解決できてよかった。
おそらく UITest の新規ターゲットを追加したときに
xctest の設定にならないことを治すべきだとは思うけど
今はテスト優先なので時間があるときに検証してみる(多分しない)。

ここまでご覧いただきありがとうございます。
めったにないことだとは思いますが,他に困った方の参考になれば幸いです。