【问题标题】:Localizations aren't loaded in XCTest?XCTest 中没有加载本地化?
【发布时间】:2013-11-19 21:18:39
【问题描述】:

我在 Xcode 中有一个架构,它只配置了测试。这个模式指向一个包含我所有测试的目标(这是 OS X 的 Cocoa Unit Testing Bundle 目标)。

所以,我使用 Command+U 来运行所有这些测试,它运行良好。但是,有几个测试需要访问本地化资源。我将这些资源添加到我的目标中,甚至签入生成的本地化资源的构建二进制文件。

但是,代码看不到资源,所以当任何测试执行 NSLocalizedString 时,它会返回一个键,而不是本地化字符串。

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

【问题讨论】:

    标签: xcode macos localization xctest


    【解决方案1】:

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

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

    替换

    [NSBundle mainBundle]
    

    [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;
    }
    

    希望这对以后查看此帖子的人有所帮助。

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多