XCTest中未加载本地化吗?

问题描述 投票:9回答:1

我在Xcode中有一个仅配置了Test的架构。这个模式指向一个包含我所有测试的目标(这是OS X的Cocoa单元测试套件目标)。

因此,我使用Command + U运行所有这些测试,并且工作正常。但是,几次测试需要访问本地化资源。我将这些资源添加到目标中,甚至检查生成的二进制文件中是否存在本地化资源。

但是,代码看不到资源,因此当任何测试执行NSLocalizedString时,它将返回键而不是本地化的字符串。

为了让测试看到这些资源,我需要做些特别的事情吗?

xcode macos localization xctest
1个回答
6
投票

这个问题的发帖日期有点旧,但是我遇到了同样的问题。我在博客上发现了这个很棒的文章,描述了这个问题,并且有很好的解决方案。

他有两个解决方案,第一个(对我不起作用):

替换

[NSBundle mainBundle]

with

[NSBundle bundleForClass:[self class]]

第二个解决方案(使用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;
}

希望这可以帮助以后查看此帖子的人。

© www.soinside.com 2019 - 2024. All rights reserved.