0

我现在拥有的应用程序源代码(ObjC),有时使用 NSAssert(像许多其他程序一样)。

我看到一个单元测试正在测试使用 XCTAssertThrows 调用断言。

从 TDD 的角度来看,这对测试断言是否正确?

除此之外,如果我在测试时使用调试器,它会一直在这些断言中停止,这很烦人。如果我使用 NS_BLOCK_ASSERTIONS=1 我会解决这个问题,但显然不会再工作并且这些测试会失败。

关于如何管理的任何线索?

4

2 回答 2

1

如果遵循纯 TTD 风格,您将对断言进行测试,否则您不会首先编写它 - 即编写最少数量的代码来通过测试。

断言无疑是对错误条件的响应,并且通过拥有它,如果它被触发,您不想在断言之后执行代码。

也许用这些术语来决定 - 如果没有对其进行测试,有人可以删除断言并且构建不会中断(没有测试失败),那么在错误条件下断言之后执行代码的后果是什么?

我建议如果您出于特定原因需要断言,请对其进行测试。

于 2018-01-30T20:25:21.897 回答
0

如果我误解了您的问题,请原谅我;请多多包涵。

XCTAssertThrowsError用于断言正在抛出异常。将它用于预期异常的测试,例如:

func test_Divide_GivenADivisorOfZero_ThrowDivideByZeroException() 
{
   let subject = Mathematician()
   // test passes if the exception is thrown; otherwise it fails
   XCTAssertThrowsError(try subject.Divide(5, 0))
}

如果我误解了你的问题,请告诉我,我会修改我的答案。

于 2018-01-31T16:54:57.203 回答