Я нашел способ провалить тест, если текст не локализован для языка.
Я добавил это в своем UITest:
XCTAssertEqual(lblSecond.label, returnLocalizedText(textKey: "Bye"))
Что это значит, что вы передаете ключ для вашего локализованного текста, и проверьте, совпадает ли он с текстом метки. Вы можете получить текст метки так:
//you can set this identifier in storyboard or in your VC like
lblTitle.accessibilityIdentifier = "lblSecondIdentifier"
//Then in XCTest
let lblSecond = app.staticTexts["lblSecondIdentifier"]
XCTAssert(lblSecond.isHittable) //check whether it exist first
Тогда это функция. Он проверит, существует ли путь и найдет ли текст, и, наконец, вернет локализованную строку, если она существует:
func returnLocalizedText(textKey: String) -> String{
guard let languageCode = Locale(identifier: Locale.preferredLanguages.first!).languageCode else {
XCTFail("languageCode not found")
fatalError()
}
guard let path = Bundle(for: type(of: self)).path(forResource: "Localizable", ofType: "strings", inDirectory: nil, forLocalization: languageCode) else{
XCTFail("path not found")
fatalError()
}
guard let dict = NSDictionary(contentsOf: URL(fileURLWithPath: path)) else {
XCTFail("dict not found")
fatalError()
}
guard let text = dict.value(forKey: textKey) as? String else {
XCTFail("text not found")
fatalError()
}
return text
}