Firebase/Coreをcocoapodで入れたらUITestが通らなくなった
アナリティクス対応のためFirebase/CoreをCocoaPodで入れました。実機ビルど、シミュレータービルド、Unitテストは問題なく通ったのですが、UITestだけ失敗するようになってしまいました。
その際に出ていたエラーログは下記のものになります。CocoaPodのversionは1.5.3を使っていました
エラーログ
2019-04-17 10:39:11.774975+0900 アプリ名UITests-Runner[4110:603473] Running tests...
2019-04-17 10:39:11.829374+0900 アプリ名UITests-Runner[4110:603473] バンドル“アプリ名UITests”は、壊れているか必要なリソースがないため読み込めませんでした。 バンドルを再インストールしてください。
2019-04-17 10:39:11.829410+0900 アプリ名UITests-Runner[4110:603473] (dlopen_preflight(/var/containers/Bundle/Application/C75A86D2-6C0B-4E73-A0B7-E359BC8D8F8F/アプリ名UITests-Runner.app/PlugIns/アプリ名UITests.xctest/アプリ名UITests): Library not loaded: @rpath/GoogleUtilities.framework/GoogleUtilities
Referenced from: /var/containers/Bundle/Application/C75A86D2-6C0B-4E73-A0B7-E359BC8D8F8F/アプリ名UITests-Runner.app/PlugIns/アプリ名UITests.xctest/アプリ名UITests
Reason: image not found)
解決策
めちゃくちゃハマってしまい約2日くらい悩み続けていたのですが、やっと解決をすることができました。
FirebaseのissureにあるようにどうやらCocoaPodのバグのようでした。
UItestのBuildSettingでRunpath Search Pathsと検索をして、$(FRAMEWORK_SEARCH_PATHS)を追加すると良いと書いてあったので追加したところシミュレータでUITestが通るようになりました。実機ビルドはここを変更しただけではだめでした。
実機でUITestできるようにする
他の記事ではスコープをテストの部分だけ分けると使えるようになると記載されている記事が多くありました。
しかし、私の場合そのやり方をするとSimulatorStatusMagicが使えなくなってしまった為、以下のようにUITestにもライブラリを入れてpod installを行ったところ実機ビルドができるようになりました。
platform :ios, '10.0'
target 'AppName' do
use_frameworks!
# Pods for AppName
pod 'libb2s', '~>1.0.2'
pod 'RxBluetoothKit','5.1.4'
pod 'Swinject','2.5.0'
pod 'iOSDFULibrary','4.2.2'
pod 'Firebase/Core', '5.20.1'
pod 'SwiftLint','0.27.0', :configurations => ['Debug']
pod 'SwiftFormat/CLI','0.35.7', :configurations => ['Debug']
pod 'SimulatorStatusMagic','2.4.1'
target 'AppNameTests' do
inherit! :search_paths
# Pods for testing
end
target 'AppNameUITests' do
inherit! :search_paths
pod 'libb2s', '~>1.0.2'
pod 'RxBluetoothKit','5.1.4'
pod 'Swinject','2.5.0'
pod 'iOSDFULibrary','4.2.2'
pod 'Firebase/Core', '5.20.1'
pod 'SimulatorStatusMagic','2.4.1'
end
end
install時にwarningがたくさん出てしまうのでおそらく良い方法ではないと思いますが、現状このやり方以外に良い解決策が見つかりませんでした。
もっと良い解決策を見つけたら記事の修正を行います。参考文献にハマっていた2日間で私が見つけためぼしい記事のリンクを貼っておくので参考にしてください。
参考文献
UI Tests no longer run after Firebase/Core pod install
dyld: Library not loaded with cocoapods 0.37 and Xcode 6.3
OS X Framework Library not loaded: ‘Image not found’
Test target with inherit! :search_paths missing framework search paths
UITests missing 📦 Embed Pods Frameworks build phase in 1.0.0.rc.1
Linker error because symbol _OBJC_CLASS_$_GULAppDelegateSwizzler is not found