Vic*_*nin 8 macos xcode localization xctest
我在XCode中有一个只配置了Test的模式.这个架构指向一个具有我所有测试的目标(这是OS X的Cocoa Unit Testing Bundle目标).
所以,我做Command + U来运行所有这些测试,它工作正常.但是,一些测试需要访问本地化资源.我将这些资源添加到我的目标中,甚至检查生成的二进制文件,即本地化资源存在.
但是,代码看不到资源,因此当任何测试执行NSLocalizedString时,它返回一个键,而不是本地化的字符串.
为了让测试看到这些资源,我需要做些什么特别的事情?
小智 5
关于这个问题的发布日期有点旧,但我遇到了同样的问题.我在博客上发现了这篇精彩的文章,描述了这个问题,并且有一个很好的解决方案.
他有两个解决方案,第一个解决方案(对我不起作用):
更换
[NSBundle mainBundle]
Run Code Online (Sandbox Code Playgroud)
同
[NSBundle bundleForClass:[self class]]
Run Code Online (Sandbox Code Playgroud)
第二个解决方案(使用OCMock非常好):
static id _mockNSBundle;
+(void)setUp {
_mockNSBundle = [OCMockObject niceMockForClass:[NSBundle class]];
NSBundle *correctMainBundle = [NSBundle bundleForClass:[self class]];
[[[[_mockNSBundle stub] classMethod] andReturn:correctMainBundle] mainBundle];
}
+(void)tearDown {
[_mockNSBundle stopMocking];
_mockNSBundle = nil;
}
Run Code Online (Sandbox Code Playgroud)
希望这有助于将来检查这篇文章的人.
| 归档时间: |
|
| 查看次数: |
1685 次 |
| 最近记录: |