web-dev-qa-db-ja.com

Swift-テストターゲットのNSBundleを取得しますか?

Objective Cでは、テストバンドルにアクセスする必要があるときはいつでも、

[NSBundle bundleForClass:[ClassInTestTarget class]];

bundleForClassはSwiftでは使用できません。テストバンドルにアクセスするにはどうすればよいですか?

これが必要な理由は、現在取り組んでいるフレームワークのテストを作成するために、メモリ内コアデータスタックを使用する必要があるためです。最初はすべてのリソースがメインターゲットとテストターゲットの両方に含まれていましたが、次にこれらすべてのテストヘルパーをテストターゲットのみに移動しました。現在、以下のコードはnilを返し、すべてのテストに失敗します。

let modelURL = NSBundle.mainBundle().URLForResource("Model", withExtension: "momd")
23
aryaxt

対応するSwiftコードは

// Swift 3 and later:
Bundle(for: ClassInTestTarget.self)

// Swift 1, 2:
NSBundle(forClass: ClassInTestTarget.self)

ClassInTestTarget.self「ClassInTestTarget」クラスのクラスオブジェクトを返します。

45
Martin R