UI测试Xcode

时间:2018-11-27 14:07:00

标签: ios xctest xcuitest

此测试失败,因为

  

的最大长度超过128个字符。您可以解决此问题   通过使用自定义NSPredicate构造查询来限制   指定属性(标签,标题,值,placeholderValue或   标识符)进行匹配。'

func testMessage() {
        app.buttons["BEGIN"].tap()

        let tablesQuery = app.tables
        XCTAssert(tablesQuery.children(matching: .cell).element(boundBy: 0).staticTexts["<EXTREMELY LONG TEXT HERE (200chars)>"].exists)
    }

我该如何转换它,以便在测试文本的有效性时可以解决128个字符的限制。

1 个答案:

答案 0 :(得分:1)

您可以使用label LIKE作为完整字符串:

let yourSuperLongText = "your super long string"
let predicate = NSPredicate(format: "label LIKE %@", yourSuperLongText)
let element = tablesQuery.children(matching: .cell).element(boundBy: 0).staticTexts.element(matching: predicate)

XCTAssert(element.exists)

或者您可以在部分字符串中使用label CONTAINS

 let partOfYoursSuperLongText = "part of your super long string"
 let predicate = NSPredicate(format: "label CONTAINS[c] %@", partOfYoursSuperLongText)
 let element = tablesQuery.children(matching: .cell).element(boundBy: 0).staticTexts.element(matching: predicate)

 XCTAssert(element.exists)

更多信息: How to test that staticTexts contains a string using XCTest

此处:https://developer.apple.com/documentation/foundation/nspredicate