Swift XCUI 字符串断言失败

Posted

技术标签:

【中文标题】Swift XCUI 字符串断言失败【英文标题】:Swift XCUI string assertion failing 【发布时间】:2017-07-06 17:22:49 【问题描述】:

我正在使用 xcode 8.3.3 并编写 XCUI 测试。

我有以下几点: let address = XCUIApplication().buttons["URL"].value as! String

在调试器中查看,可以看到值为:

如果我设置 expectedURL = "\ue2auth.int....net" 然后返回:

如果我设置 expectedURL = "auth.int....net" 然后返回:

如何让测试断言找到两个字符串相等?

尝试了以下方法,但它不能替换“\ue2”:

let address = value.components(separatedBy: ",").first!.replacingOccurrences(of: "\ue2", with: "")

还有(但它不会取代“\ue2”):

let range = Range<String.Index>(uncheckedBounds: (lower: address.startIndex, upper: address.endIndex))

let strippedAddress = address.replacingOccurrences(of:"\\ue2", with: "", options: .literal, range: range)

对于断言,我使用的是XCTAssertEqual(address, expectedURL)

【问题讨论】:

【参考方案1】:

您可以通过字母数字字符分隔然后用空字符串连接来修复它,如下所示。

let myString = address.components(separatedBy: CharacterSet.alphanumerics.inverted).joined(separator: "")

myString然后等于 authintxxxxxxxxxnet(没有“.”字符),所以您应该能够更改您的预期 URL 以匹配。

希望有帮助!

【讨论】:

以上是关于Swift XCUI 字符串断言失败的主要内容,如果未能解决你的问题,请参考以下文章

使用 XCUI 进行 UI 测试

Junit 在法语字符串断言上失败

调试断言失败,字符串下标超出范围

使用 delete[] 调试断言失败

sprintf_s() 因“调试断言失败”错误而失败

Firebase swift ios 登录系统错误断言失败/Exec_BAD_INSTRUNCTION (code=EXC_i386_INVOP, subcode=0x0)