Objective Cでは、テストバンドルにアクセスする必要があるときはいつでも、
[NSBundle bundleForClass:[ClassInTestTarget class]];
bundleForClass
はSwiftでは使用できません。テストバンドルにアクセスするにはどうすればよいですか?
これが必要な理由は、現在取り組んでいるフレームワークのテストを作成するために、メモリ内コアデータスタックを使用する必要があるためです。最初はすべてのリソースがメインターゲットとテストターゲットの両方に含まれていましたが、次にこれらすべてのテストヘルパーをテストターゲットのみに移動しました。現在、以下のコードはnilを返し、すべてのテストに失敗します。
let modelURL = NSBundle.mainBundle().URLForResource("Model", withExtension: "momd")
対応するSwiftコードは
// Swift 3 and later:
Bundle(for: ClassInTestTarget.self)
// Swift 1, 2:
NSBundle(forClass: ClassInTestTarget.self)
ClassInTestTarget.self
「ClassInTestTarget」クラスのクラスオブジェクトを返します。