Swift - 获取NSBundle用于测试目标?

ary*_*axt 21 nsbundle swift

在Objective C中,每当我必须访问测试包时,我都会调用它

[NSBundle bundleForClass:[ClassInTestTarget class]];
Run Code Online (Sandbox Code Playgroud)

bundleForClass 在Swift中不可用,那么如何访问测试包呢?

我需要这个的原因是,为了编写我正在研究的框架的测试,我必须使用内存核心数据堆栈.最初所有资源都包含在主目标和测试目标中,但之后我将所有这些测试帮助程序仅移动到测试目标,现在下面的代码返回nil,这导致我的所有测试失败

let modelURL = NSBundle.mainBundle().URLForResource("Model", withExtension: "momd")
Run Code Online (Sandbox Code Playgroud)

Mar*_*n R 45

相应的Swift代码是

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

// Swift 1, 2:
NSBundle(forClass: ClassInTestTarget.self)
Run Code Online (Sandbox Code Playgroud)

ClassInTestTarget.self 返回"ClassInTestTarget"类的类对象.

  • @ReinhardMänner:`ClassInTestTarget` 是框架中某些类的*占位符*。您必须替换现有类的具体名称。 (3认同)