iOSアプリの開発時に、外部ライブラリをCocoapodsで導入したんだけど、ユニットテストは問題なく動くのに、なぜかUIテスト時に動かなかったときの覚書き。
起こったこと
UIテスト(XCUITest)を動かそうとしたら、以下のエラーログを出力してシミュレータ上でテストイメージが動かず、困ってしまった。
2018-10-08 18:43:20.753373+0900 (中略)
...UITests): Library not loaded: @rpath/RevealServer.framework/RevealServer
対処1: ターゲットへリンクを手動で設定する
ググってみたら、UIテストのターゲットの “Build Phases” の設定の中で、 “Link Binary With Libraries” にその外部ライブラリを追加すべし、とのこと。
なので、やってみた。
でも、やはり同じログを出力して失敗する。
対処2: 該当フレームワークをOptional設定にする。
もっと調べてみると、「追加したフレームワークは、StatusがRequiredのままだと組み込みに失敗するが、Optionalだと成功した」という情報も見つかった。
そちらを試してみる。
これでうまくUIテストが動いてくれた。
おわりに
どういう仕組みで失敗し、対処によってうまくいったのかが分からないんだけど。。。
- 動かないテストのターゲットで、Link Binary With Libraliesに該当ライブラリを追加する。
- そのライブラリのStatusをRequiredからOptionalに変更する。
という2段階の対処によって、今回の問題は解決した。すぐに忘れてしまいそうなので、美貌のために書き残す。
Comments