gpt4 book ai didi

xcode - 在等待期望时使用 XCTFail 不会阻止超时

转载 作者:行者123 更新时间:2023-12-05 09:17:17 25 4
gpt4 key购买 nike

运行异步操作的 XCTest 时,调用 XCTFail() 不会立即使测试失败,这是我的预期。相反,调用 wait 后剩余的任何超时时间都会首先耗尽,这会不必要地延长测试时间,还会产生令人困惑的失败消息,暗示测试因超时而失败,而实际上它是明确失败的.

func testFoo() {
let x = expectation(description: "foo")

DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
XCTFail("bar")
}

wait(for: [x], timeout: 5)
}

在上面的示例中,虽然失败发生在大约 2 秒后,但直到 5 秒的超时期限过去后测试才完成。当我第一次注意到这种行为时,我以为我做错了什么,但这似乎就是它的工作方式,至少对于当前版本的 Xcode (9.2) 是这样。

由于我没有通过 google 或 stackoverflow 搜索找到任何提及此问题的信息,因此我将分享我找到的解决方法。

最佳答案

我发现调用XCTFail()后XCTestExpectation仍然可以完成,这不算pass,立即让wait过期。因此,将其应用于我的初始示例:

DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
XCTFail("bar")
x.fulfill()
}

这可能是 Apple 所期望的,但它对我来说并不直观,而且我在任何地方都找不到它的文档。所以希望这可以节省其他人我在困惑中度过的时间。

关于xcode - 在等待期望时使用 XCTFail 不会阻止超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48669816/

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