我现在拥有的应用程序源代码(ObjC),有时会使用NSAssert(就像许多其他程序一样)。
我看到一个测试使用XCTAssertThrows调用断言的单元测试。
从TDD的角度来看,测试断言是正确的吗?
除此之外,如果我在测试时使用调试器,它会在这些断言中一直停止,这很烦人。如果我使用NS_BLOCK_ASSERTIONS = 1我解决了这个问题,但显然不再适用,那些测试会失败。
有关如何管理的任何线索?
答案 0 :(得分:1)
如果遵循纯TTD样式,您将对断言进行测试,否则您不会首先编写它 - 即写入最少量的代码以通过测试。
断言无疑是对错误条件的回应,并且如果它被触发,则在断言后你不想执行代码。
也许用这些术语来思考 - 没有测试它,有人可以删除断言,构建不会中断(没有测试失败),那么在断言之后执行代码的结果是什么呢?错误条件?
我建议如果您因特定原因需要断言,那么请对其进行测试。
答案 1 :(得分: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))
}
如果我误解你的问题,请告诉我,我会修改我的答案。