iphone - 单元测试找不到核心数据模型文件

标签 iphone cocoa xcode unit-testing ocunit

我创建了一个包含核心数据模型的项目。该应用程序查找模型文件 (.momd) 并运行良好。

不幸的是,单元测试一直返回 null:

NSURL *dataModelURL = [[NSBundle mainBundle] URLForResource:@"myDataModel" withExtension:@"momd"];

我可以在主目标和单元测试目标的编译源目录中看到 myDataModel.xdatamodeld 文件夹和文件 - 但这似乎还不够。我在单元测试目标中还缺少什么?

谢谢, -路德

最佳答案

不幸的是,单元测试目标不使用应用程序的主包,但它创建一个特殊的 UnitTest 包。因此,如果您需要在测试中使用捆绑资源(例如核心数据模型),则需要解决该问题。

最简单、最灵活的解决方法是在测试代码中使用 NSBundlebundleForClass: 方法。该方法的参数可以简单地由测试中的[self class] 给出。这样您就可以重用此代码,而无需在多个项目中调整包标识符。

示例:

- (void)testBundleLocation
{
    NSBundle *bundle = [NSBundle bundleForClass:[self class]];
    NSURL *url = [bundle URLForResource:@"myDataModel" withExtension:@"momd"];
    ...
}

关于iphone - 单元测试找不到核心数据模型文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5662947/

相关文章:

iphone - 如何解析 iphone 中的 json 响应?

ios - 圆弧 : how to inject custom dealloc IMP in object which in turn calls original dealloc without causing malloc error

c - 为什么 OS X 上的 fgets 输出一个 BELL (^G, ascii : 07) character when input exceeds expected length?

c++ - 需要左值作为赋值错误的左操作数

swift - Xcode - 由于 NSWindow.StyleMask,字体呈现不同

iphone - 无法分配 CLLocationManager

iphone - facebook 使用 quickblox sdk 而不是 facebook-ios-sdk

objective-c - 在 Objective C 中启动命令行

macos - 在 MAC OS X 10.8.x 上,AppStore 应用程序如何安装内核扩展?

iphone - 无法对存储在 NSMutableArray 中的字符串使用 ComponentsSeparatedByString