我遇到了这样一种情况,我有一些文本字段需要验证,我正在尝试运行一个UI测试,当它们失败时,它们会得到一个警报,并弹出一条错误消息(可能是不同的消息,取决于哪些字段是无效的,以及以什么方式无效)。
我想测试的不仅是警报是否出现,而且消息是否显示正确。我遇到的问题是,我需要获取本地化文本进行比较(如果我用英语以外的其他语言运行测试),但当我在UITest中调用NSLocalizedString时,它无法收集正确的本地化字符串(只返回键[default])
我试过将localizeable.strings
文件添加到UITest目标,但是没有用。有人知道这是否可行吗?
**作为旁注编辑:**我还尝试在UIAlertView
上设置一个可访问性标识符,但当我使用该可访问性标识符查询时,它不存在,我只能使用警报的标题来查询它,这看起来是反向的。
3条答案
按热度按时间nbysray51#
在UI测试中,主捆绑包似乎是一个随机启动应用,这就是为什么.strings文件没有出现的原因:即使您将其添加到测试包中,NSLocalizedString仍在检查错误的包。要解决此问题,您需要像这样的调用:
您可能希望将其拉入帮助器方法中。
hgncfbus2#
下面是我的解决方案:
1.在UI测试目标-〉构建阶段-〉复制捆绑包资源中,添加所需的本地化文件(例如Localizable. string)。
1.添加类似于以下内容的函数:
1.按如下方式使用函数:
app.buttons[localizedString("localized.string.key")]
70gysomp3#
我在这里写了另一种方法:https://stackoverflow.com/a/75178860/7715250.删除/关闭问题时的复制粘贴:
不调用
String
上的方法的不同方法您正在使用
NSLocalizedString
。确保将翻译添加到测试目标(转到
Localizable
文件,在右侧点击UI测试目标)。把这个加到你主要目标的某个地方
将此值添加到所有
NSLocalizedString
中的参数bundle
,如下所示:覆盖
XCTestCase
子类中的setUp方法并添加以下行:bundleForLocalizedTexts = Bundle(for: MySubclass.self)
所有的语言都应该工作,没有额外的方法调用。