XCTest でタイムアウトエラーなしで T 秒間待機するにはどうすればよいでしょうか? 質問する

XCTest でタイムアウトエラーなしで T 秒間待機するにはどうすればよいでしょうか? 質問する

タイムアウトを生成せずに、テストの進行を T 秒間遅らせたい。

まず、明白なことを試しました:

sleep(5)
XCTAssert(<test if state is correct after this delay>)

しかしそれは失敗しました。

それから私は試しました:

let promise = expectation(description: "Just wait 5 seconds")
waitForExpectations(timeout: 5) { (error) in
    promise.fulfill()

    XCTAssert(<test if state is correct after this delay>)
}

私のXCTAssert()場合は成功しました。しかし、waitForExpectations()タイムアウトで失敗しました。

これは、XCTest待機関数こう言っています。

タイムアウトは常にテスト失敗として扱われます。

どのような選択肢がありますか?

ベストアンサー1

使用できますXCTWaiter.wait機能。

例えば:

let exp = expectation(description: "Test after 5 seconds")
let result = XCTWaiter.wait(for: [exp], timeout: 5.0)
if result == XCTWaiter.Result.timedOut {
    XCTAssert(<test if state is correct after this delay>)
} else {
    XCTFail("Delay interrupted")
}

おすすめ記事