ssr*_*bbi 15 ios xcode7 xcode-ui-testing
所以我有一种情况,我有一些经验证的textFields.我正在尝试运行UI测试,当他们失败时,他们会收到警告,弹出一条错误消息(可能是一个不同的消息,取决于哪些字段无效以及以何种方式).
我想测试一下,不仅会出现警报,而且会显示正确的消息.我遇到的问题是我需要获取本地化的文本进行比较(如果我用英语以外的其他语言运行测试),但是当我在UITest中调用NSLocalizedString时它无法收集正确的本地化字符串(只是返回关键[默认])
我已经尝试将localizeable.strings文件添加到UITest目标,但无济于事.有谁知道这是否可能?
编辑作为旁注:我也试过设置一个辅助功能标识符UIAlertView但是当我用该辅助功能标识符查询它不存在时,我只能使用看起来倒退的警报标题来查询它.
Man*_*uel 19
在UI测试中,主包似乎是一个随机启动器应用程序.这就是.strings文件没有出现的原因:即使你将它添加到测试包中,NSLocalizedString也会检查错误的包.要解决这个问题,您需要这样的调用:
NSLocalizedString("LOCALIZATION_KEY", bundle: NSBundle(forClass: AClassInYourUITests.self), comment: "")
Run Code Online (Sandbox Code Playgroud)
您可能希望将其纳入辅助方法.
这是我的解决方案:
在您的 UI 测试目标 -> 构建阶段 -> 复制捆绑资源中,添加所需的本地化文件(例如 Localizes.strings)。
添加类似于以下的函数:
func localizedString(key:String) -> String {
/*1*/ let localizationBundle = NSBundle(path: NSBundle(forClass: /*2 UITestsClass*/.self).pathForResource(deviceLanguage, ofType: "lproj")!)
/*3*/ let result = NSLocalizedString(key, bundle:localizationBundle!, comment: "") //
return result
}
/*1 Gets correct bundle for the localization file, see here: http://stackoverflow.com/questions/33086266/cant-get-access-to-string-localizations-in-ui-test-xcode-7 */
/*2 Replace this with a class from your UI Tests*/
/*3 Gets the localized string from the bundle */
Run Code Online (Sandbox Code Playgroud)使用这样的函数:app.buttons[localizedString("localized.string.key")]
| 归档时间: |
|
| 查看次数: |
3480 次 |
| 最近记录: |