Lento con forza

大学生気分のIT系エンジニアが色々書いてく何か。ブログ名決めました。

Swiftでのユニットテストでクラスが見えない問題

XcodeでProjectを作った時にデフォルトで作られるテストケースでのユニットテストで、少し(だいぶ)はまったのでメモして起きます。

Testsファイルから自作クラスが見えない?

Testsファイルから、自作クラスをインスタンス化しようとすると

f:id:kouki_dan:20141115094605p:plain

このように、クラスが見えなくインスタンス化できない状態になってしまいました。

Targetがプロダクト用とテスト用で別だからできないのかなぁ。と思いつつ、不便だなぁ。とずっと思ってたんですが・・。

解決策

テストしたい対象のswiftファイルのTargetsに、~~Testsも追加してあげれば解決します。

ファイルを作成する時に、ここのTargetsを

f:id:kouki_dan:20141115095107p:plain

このように、チェックを入れるのを忘れないようにすれば~~Testsからでもクラスが見えるようになります!

f:id:kouki_dan:20141115095212p:plain

既存ファイルの場合・・・

既存ファイルの場合でも、簡単にTargetを変更可能です。

f:id:kouki_dan:20141115095452p:plain

File Inspector内の、Target Membershipのチェックを変更することで、ファイル作成時に設定したTargetを自由に変更する事が可能です!

まとめ

よく考えてみたら当たり前だけど、なかなか気付きにくいんじゃないかなぁって思います。
classとmethodをpublicにしないとユニットテストできねーじゃん!!とか最初思ってたんですが、そんなことはなかったです。