1

我正在使用 XCode 4。

有人可以向我解释为什么当我编写单元测试(在测试目标下)时它找不到我的本地文件资源吗?我正在尝试在单元测试中从 NSBundle 加载 plist 文件,但它在单元测试目标中不起作用。我试过把它扔到测试目标的类区域下。

这是我的代码:

NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *finalPath = [path stringByAppendingPathComponent:@"urlMappings.plist"];
self.urlMappings  = [NSDictionary dictionaryWithContentsOfFile:finalPath];

self.urlMappings 出于某种原因是空的,即使 urlMappings.plist 肯定存在于我的项目中。这是 urlMappings.plist 的来源,以证明它实际上是一本字典。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>%server%view.html</key>
    <string>testHtml1.html</string>
</dict>
</plist>

有任何想法吗?谢谢

4

2 回答 2

7

在测试目标下,您不应该使用 [NSBundle mainBundle],因为它是主包,而不是测试包。你应该使用 [NSBundle bundleForClass:[self class]] 替换。

于 2013-08-22T08:28:22.237 回答
0

解决方案(没有意义)是它不在主要目标的捆绑资源中。即使我只是在测试中使用它,它也必须在两个目标的捆绑资源中。

有谁知道为什么会这样?

于 2011-03-31T02:58:57.943 回答