Xcode 7 UI 测试目标语言环境和区域设置

Posted

技术标签:

【中文标题】Xcode 7 UI 测试目标语言环境和区域设置【英文标题】:Xcode 7 UI Testing target locale and region settings 【发布时间】:2016-03-03 15:18:56 【问题描述】:

我正在尝试设置我的 UI 测试目标的语言和区域,但不幸的是它似乎不起作用。

我已经尝试了两种方法,首先:

产品 |方案 |编辑方案 运行 |选项 应用语言:法语 应用地区:法国 测试 |论据 使用 Run 操作的参数和环境变量:选中

我尝试了另一种方式:

产品 |方案 |编辑方案 测试 |论据 使用运行操作的参数和环境变量:未选中 启动时通过的参数: -AppleLanguages (French) -AppleLocale fr_FR

导致 UI 测试的各种方式仍然以英语进行。而且,当我点击录制按钮时,它以法语运行......

所以如果我做错了什么,我很乐意知道!

提前致谢!

【问题讨论】:

你搞清楚了吗?我有完全一样的问题。即使模拟器设置更改也没有效果:-( 【参考方案1】:

我想通了。我在 launchArguments 中设置了语言环境设置,以便在 Xcode 中进行临时测试。

override func setUp() 
    super.setUp()

    // Put setup code here. This method is called before the invocation of each test method in the class.

    // In UI tests it is usually best to stop immediately when a failure occurs.
    continueAfterFailure = false
    app = XCUIApplication()
    app.launchArguments = [
        "-inUITest",
        "-AppleLanguages",
        "(de)",
        "-AppleLocale",
        "de_DE"
    ]

对于 CI,我使用 Felix Krause 的 fastlane 并获取带有快照的本地化屏幕截图。

【讨论】:

哇!谢谢!我工作,即使我不明白为什么目标设置不! (我也使用 Felix Krause 的工具) 人们会认为方案设置可以完成这项工作,但事实并非如此。先生,您是英雄! 很遗憾对我不起作用。至少在目标应用程序中使用 [NSLocale currentLocale].localeIdentifier。它忽略启动参数,而是读取 sim 设置。实际上,这与另一篇文章“参数实际上传递给测试本身而不是被测试的应用程序”有关。请参阅 ***.com/questions/35463150/… 以及 Apple 在 WWDC 视频中的声明。测试运行程序包只能通过可访问性与应用目标交互。 其实我现在不太确定。在 UI 测试目标方案设置中传递参数有效。但是代码中与 launchArguments 的等价物被忽略了。这与developer.apple.com/library/content/documentation/MacOSX/… 描述的行为相矛盾【参考方案2】:

尝试更改模拟器上的规格。每次都对我有用。

在模拟器上: 设置 > 通用 > 语言和地区 > iPhone 语言 --> 在此处更改

【讨论】:

谢谢,但不幸的是,此方法有两个注意事项:重置模拟器时,您会丢失配置,但最重要的是,它仅适用于本地计算机上的模拟器。就像 CI 在 Xcode 服务器上运行时一样,您无法访问运行测试的模拟器。 对不起,那是我唯一的镜头。祝你好运

以上是关于Xcode 7 UI 测试目标语言环境和区域设置的主要内容,如果未能解决你的问题,请参考以下文章

设置 UI 测试 Xcode 7 后单元测试永远不会运行

Xcode 7 UI 测试初窥

如何在现有的 ios 测试项目中启用 xcode 7 UI 测试

UI 测试 + postNotificationName + 永远不会到达观察者 + Xcode 7

如何为 Xcode UI 测试禁用沙箱

UI 测试不再适用于 Xcode 7.3