我可以在不失败的情况下做出 XCTest 期望吗?

Posted

技术标签:

【中文标题】我可以在不失败的情况下做出 XCTest 期望吗?【英文标题】:Can I make an XCTest Expectation without failing? 【发布时间】:2016-04-08 17:11:09 【问题描述】:

我正在使用 Xcode 7,Swift UI 自动化。我需要等待 UIButton 出现在我的主屏幕中。我为“exists == 1”设定了一个期望。

这个 UIButton 有时会出现,有时不会。 在我的 UI 测试期间,如果元素出现,则一切正常。 但是如果元素没有出现,则期望失败(我不希望它失败,我只需要采取另一个行动流程)

如果我们的测试实际上失败了,我该如何做出决定?

【问题讨论】:

如果您知道按钮应该何时显示,您可以添加一个简短的睡眠呼叫sleep(3),然后检查按钮是否存在 这就是我正在做的,也是我想要避免的。我不想使用 sleep() 调用。谢谢 【参考方案1】:

您必须等待期望并处理它,如果这没有发生,请在括号中执行其他操作。

let exists = NSPredicate(format: "exists == 1")
expectationForPredicate(exists, evaluatedWithObject: UIButton, handler: nil)
waitForExpectationsWithTimeout(10)  error in

   somethings else

干杯

【讨论】:

以上是关于我可以在不失败的情况下做出 XCTest 期望吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不改变状态的情况下对 redux 操作做出反应

为啥带有基于谓词的期望的 XCTest 这么慢?

XCTest - 等待谓词失败

单元测试不了解 XCTest 期望的异步 UI 代码?

在不嘲笑任何事情的情况下设定期望

如何在不使用电子锻造重定向到根目录的情况下进行热重装并做出反应