iOSプロジェクトのテストバンドルに存在するファイルを取得する

More than 1 year has passed since last update.

Xcode 9.2, Swift 4で動作確認済み


アプリケーションバンドルに存在するファイルを取得する

アプリケーションバンドルに存在するファイルは、以下のコードで取得できる。

let path = Bundle.main.path(forResource: "foo", ofType: "json")

let data: NSData? = try? NSData(contentsOfFile: path!, options: .uncached)

ユニットテスト等でテストバンドルに存在しているファイルを取得するにはこの方法ではうまくいかない。


テストバンドルに存在するファイルを取得する

以下の方法で取得できる。

let testBundle = Bundle(for: type(of: self))

let path = testBundle.url(forResource: "bar", withExtension: "json")
let data: NSData? = try? NSData(contentsOf: path!, options: .uncached)


プロジェクト構成

resource.png

参考:

http://stackoverflow.com/questions/19309092/nsurl-to-file-path-in-test-bundle-with-xctest