我们可以使用XCTAssertThrowsError
测试抛出的错误。可以使用expectation
测试异步事物。我有一些方法可以将工作分派到后台线程,并且有时会引发错误。
是否有可能在将来某个地方引发错误?我认为我需要结合expectation
和XCTAssertThrowsError
,但是我不知道如何。
复制项目:https://github.com/Jasperav/ThrowingAsyncError。只需克隆项目并运行测试,其中一项将失败。我创建了一个类,该类将在分配后几秒钟后崩溃。我想确保它在几秒钟后仍然崩溃,所以我需要一个测试用例。
答案 0 :(得分:0)
我查看了复制项目,以了解您要在这里完成的工作...
据我了解:
XCTAssertThrowsError 是包含可以抛出的块的断言。他们只是碰巧断言,同步块运行完成后会在该块中引发错误。
XCTestExpectation 是用于跟踪是否满足所请求条件的类。它们是用于跟踪异步代码行为的对象/引用,需要稍后保存和检查。
您似乎想做的是使 XCTestExpectation 之类的东西与 XCTAssertThrowsError 的工作方式相同,就像做出同步断言一样异步块将引发。由于代码如何运行和返回,因此无法完全正常工作。
您引用的异步代码不会抛出(计时器初始化程序)。据我所知,没有任何异步块可以抛出。也许您应该问的问题是,我们如何才能使同步操作有时选择同步运行,而在感觉......时异步运行呢?
或者,为了在每个要测试的类中增加一些复杂性,我已经制定了一个解决方案,其几乎是最低的要求,以使其易于测试和可移植...
https://github.com/Jasperav/ThrowingAsyncError/pull/1/files
我可以问你为什么要做这样的事情吗?