3

我正在尝试对用于从 plist 文件加载和查询数据的代码进行单元测试。我正在使用代码加载数据:

NSString *path = [[NSBundle mainBundle] pathForResource:@"availableshops" ofType:@"plist"];
NSArray *arrayOfShops = [[NSArray alloc] initWithContentsOfFile:path];

在模拟器和设备上测试应用程序时,一切正常。但是当我运行单元测试时,代码“ [arrayOfShops count]”总是返回“ 0”。

对于主要目标和单元测试目标,我在“复制捆绑资源”、“编译源”和“使用库链接二进制文件”中有相同的文件。我也尝试过使用和不使用主要目标作为单元测试目标的“直接依赖关系”。

有谁知道是什么问题?

4

3 回答 3

2

您不能[NSBundle mainBundle]与 Xcode 单元测试一起使用,如果您使用它,它将起作用:

NSBundle *bundle = [NSBundle bundleForClass:[self class]];

NSString *path = [bundle pathForResource:@"availableshops" ofType:@"plist"];
NSArray *arrayOfShops = [[NSArray alloc] initWithContentsOfFile:path];
于 2012-12-26T23:00:47.737 回答
1

看到这个答案。显然mainBundle在测试包的上下文中不起作用。

于 2013-03-18T23:36:08.920 回答
0

你确定 plist 根元素是一个数组吗?发布 plist 可能会有所帮助。

你也可以试试这个:

NSArray* shopsArray = [NSArray arrayWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"availableshops.plist"];
于 2009-11-17T04:19:57.953 回答