Xcode
iOS
Swift

Xcodeでテストを始める前にする設定

自分がテストを始めるにあたって設定したことを書いていきます:cat:

プロダクトとテストのTargetのTeamを合わせる

Teamは同じものを設定します。開発当初からアカウントが決まっているなら何の問題も無いですが、最初仮のアカウントでプロジェクトを作って、後から本番アカウントに変更したりすると、TargetのTeamが食い違ってしまったりします。
スクリーンショット 2018-01-12 10.51.13.png
もしプロダクトとテストで違うTeamを設定していると、CodeSigning周りでエラーが出ます。
スクリーンショット 2018-01-12 11.56.21.png

バンドルIDを変える

こちらも途中でアカウントを変更した場合ですが、初期状態のテストTargetのバンドルIDは最初のアカウントに使われてしまっているため、バンドルIDを変更する必要があります。
スクリーンショット 2018-01-12 11.59.03.png
バンドルIDはBuild Settingsから変更できます。
スクリーンショット 2018-01-12 12.09.15.png

Podsのフレームワークがインポートされるようにする

特に工夫をしない限り、テストではPodsで入れたフレームワークが見つからないというエラーが出ます。検索してみると色々解決方法が出てきますが、自分はConfigurationで使うPodsを選択するところで、テストTargetのところをプロダクトTargetと同じにする、という方法でうまくいきました。
スクリーンショット 2018-01-12 12.25.05.png
Podfileは特に変更しません。テストTargetの方にフレームワークを指定する必要はありません。

カバレッジを表示する

SchemeのTest設定で、"Gather coverage data"にチェックを入れると、テスト実行時にカバレッジが表示されるようになります。
スクリーンショット 2018-01-12 12.34.16.png
カバレッジはテスト実行後、レポートのタブから確認できます。ファイルごとにどれくらいカバーできているか見ることができます。
スクリーンショット 2018-01-12 12.43.43.png
プロダクトコードやテストコードのどこを通ったかも確認できます。通ったところは緑、通らなかったところは赤で表示されます。テストpassしたけど、実はテストコードが実行されてなかっただけ、なんてケースも発見できるようになるので、設定しておくと良いです。
coverage.png

おわりに

テストを始めようとしても、設定で詰まってしまうとかなりやる気を削がれますよね:new_moon_with_face:
そういった方々の参考になれば幸いです!:gift: