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 测试目标语言环境和区域设置的主要内容,如果未能解决你的问题,请参考以下文章
如何在现有的 ios 测试项目中启用 xcode 7 UI 测试