gpt4 book ai didi

使用 Xcode UI 测试的 Swift 异步事件处理

转载 作者:搜寻专家 更新时间:2023-11-01 06:18:27 24 4
gpt4 key购买 nike

我正在为 Xcode UI 测试应用程序使用 swift。我们被测应用程序有时会弹出一个“警告框”,影响测试用例的正常工作流程。无法预测弹出窗口何时出现。它可能出现在测试用例 1 或测试用例编号 x 处。

我想关闭“警告框”并继续测试用例的其余部分。如何使用 swift XCUITest 框架处理类似的异步事件,而不影响测试用例的正常流程?

到目前为止我发现:

expectationForPredicate(exists, evaluatedWithObject: alertbox, handler: nil)
waitForExpectationsWithTimeout(300, handler: nil)

这是不可行的,原因有二。

  1. 无法预测超时
  2. 阻塞测试用例流

    func testTestCase1 {
    let expectation = expectationWithDescription("Alert Found! Dismissing")
    do {
    // ...
    // test steps
    // ...
    expectation.fulfill()
    }
    waitForExpectationsWithTimeout(300) {
    dimissAlert()
    }
    }

引用 1: https://www.bignerdranch.com/blog/asynchronous-testing-with-xcode-6/
引用 2: XCTest and asynchronous testing in Xcode 6
引用 3:https://adoptioncurve.net/archives/2015/10/testing-asynchronous-code-in-swift/

是否有一种通用的方法来处理整个套件中的异步事件?如何在另一个线程等待“警告框”出现事件时继续测试?

干杯!

最佳答案

Stephen 是对的,UI 中断监视器应该工作得很好。我建议将它添加到您的测试设置中,以便它运行您的所有测试。

class UITests: XCTestCase {
let app = XCUIApplication()

override func setUp() {
super.setUp()
addUIInterruptionMonitorWithDescription("Alert") { (alert) -> Bool in
alert.buttons["OK"].tap()
return true
}
app.launch()
}

func testFoo() {
// example test
}
}

关于使用 Xcode UI 测试的 Swift 异步事件处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39156066/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com