无法在iphone单元测试中加载来自NSBundle的文件

Mik*_*e S 1 unit-testing objective-c nsbundle xcode4

我正在使用XCode 4.

有人可以向我解释为什么当我编写单元测试(在测试目标下)它无法找到我的本地文件资源时?我正在尝试从单元测试中加载来自NSBundle的plist文件,但它在单元测试目标中不起作用.我已经尝试将它扔在Test目标的Classes区域下.

这是我的代码:

NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *finalPath = [path stringByAppendingPathComponent:@"urlMappings.plist"];
self.urlMappings  = [NSDictionary dictionaryWithContentsOfFile:finalPath];
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢

小智 7

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