#はじめに
App Extensionの一つであるToday ExtensionのUnitTestを書こうとしてハマったので解決策を記載します。
#App ExtensionのUnitTest
まずなにもせずにApp ExtensionのUnitTestを書こうとすると様々なエラーが出てテストコードのBuildが通りませんでした。
UnitTestではテストを実行するHostApplicationをTARGETS>General>Testingから設定しますが、そもそもプルダウンの選択肢にはApp Extensionは表示されません。
しかし以下の方法でUnitTestを実行することができました。
##1.新規UnitTestのTargetを作成する
App本体のUnitTestのTargetとは別に新規で作成してください。
その際に、新規作成Target>General>TestingのHost ApplicationをNoneに設定します。
##2.UnitTestから参照するファイルのTarget MembershipにUnitTestのTargetを追加する
上記画像ではTodayViewControllerをテストするUnitTestを書く場合となります。
通常ではTarget MembershipではTodayExtensionにのみチェックが付いています。
そこに新たにTodayExtensionUnitTestにもチェックをつけています。
#おわりに
以上で手順としては完了になります。
あとはAppExtension用に作成したUnitTestのTargetで通常通りにUnitTestを書いて実行できるかと思います。
最初は@testable import TodayExtension
だけ書けばいけるかな〜と思っていたのですがエラーが出てダメでした…