遇到 failureException 时如何在 XCTest 中停止等待

Posted

技术标签:

【中文标题】遇到 failureException 时如何在 XCTest 中停止等待【英文标题】:How to stop waiting in XCTest when failureExecption is met 【发布时间】:2020-10-06 04:50:34 【问题描述】:

在TestCase 中,我调用了一个异步函数aTestFunction()。在回调中,取决于结果,它决定是满足预期expectation.fulfill()还是失败 failedExpectation.fulfill()

因为它是一个异步函数,所以我需要wait(for: [expectation], timeout: 5.0) 来获取结果。我的问题是'当测试失败failedExpectation.fulfill() 时,我不需要等待 5 秒来等待'期望',当failedExpectation 完成时我该如何停止'等待'?

let expectation = XCTestExpectation(description: "succeed")
let failedExpectation = XCTestExpectation(description: "failed")
failedExpectation.isInverted = true
        
aTestFunction()  result in 
     if result == .success 
         expectation.fulfill()
      else 
         failedExpectation.fulfill()
     
 
        
wait(for: [expectation], timeout: 5.0)

【问题讨论】:

【参考方案1】:

您不必创建两个XCTestExpectation

let expectation = XCTestExpectation(description: "Test function completion not called")
    
aTestFunction()  result in 
    expectation.fulfill()
    if result == .success 
        /// write successful test case here
     else 
        XCTFail("Test function fails")
    
 
    
wait(for: [expectation], timeout: 5.0)

如果aTestFunction 在 5 中未完成,则测试用例将失败。

如果它在 5 内完成,那么期望已经实现,现在您必须测试预期的结果是否存在。

【讨论】:

以上是关于遇到 failureException 时如何在 XCTest 中停止等待的主要内容,如果未能解决你的问题,请参考以下文章

从“django.utils.encoding”导入错误“force_text”

当 Perl 的 DBI 在准备语句时遇到错误时,如何避免程序退出?

如何解决我在使用 South 时遇到的迁移错误?

遇到网络错误时如何在iOS上调试Axios?

遇到错误时如何停止 Postgres 脚本?

没有 var 或 breakable:在数组遍历中遇到谓词时如何“中断”?