【问题标题】:Swift UI tests - XCTAssertEqual has the wrong behaviourSwift UI 测试 - XCTAssertEqual 有错误的行为
【发布时间】:2017-05-13 12:38:29
【问题描述】:

我目前正在尝试在我的 iOS 应用程序中进行一些测试,但我遇到了问题。

这是我的代码(我会在后面解释这个问题):

let passwordField = app.secureTextFields["Password"]
passwordField.tap()
passwordField.typeText("Password")

let password = passwordField.value as? String
guard let testPassword = password, !testPassword.isEmpty else {
    XCTFail("Authentication tests failed : password field is wrongly formatted.")
    return
}

XCTAssertNotEqual(password, "Random password")
XCTAssertEqual(password, "Password")

XCTAssertNotEqual 部分很好,但 XCTAssertEqual 不是。 这是错误:

XCTAssertEqual failed : (“Optional(“********”)”) is not equal to (“Optional(“Password”)”)

有谁知道为什么会抛出这个错误?我想我必须“玩”这个事实,这是一个安全的文本,但我还没有找到任何答案。

感谢您的帮助。

【问题讨论】:

  • 我认为您应该在 UITextField 中访问 text 而不是 value
  • 不幸的是,它不是 UITextField(它是 XCUIElement),所以我可以获得“测试”的唯一方法是获取所需类型的字段转换值。

标签: ios swift unit-testing testing xcode-ui-testing


【解决方案1】:

XCTAssertEqual 没有错。

第一句话

XCTAssertNotEqual(password, "Random password")

是对的,因为:

`*********` is not equal "Random password"

由于您在控制台中看到的错误消息,第二个失败。

就个人而言,我认为您在这里进行测试的逻辑有点混乱。首先,我认为XCUIElement 没有将安全文本反转为普通文本的接口。

其次,您为什么要验证,textField 中的内容是什么?可以肯定的是,无论您在其中输入什么内容,都没有必要测试原生 iOS UI 元素非常基本的功能。

如果您想测试身份验证,请尝试使用不正确的密码登录,而不是使用正确的密码登录,然后测试您的响应 BE

【讨论】:

    猜你喜欢
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    • 2014-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-12
    相关资源
    最近更新 更多