测试断言是否有意义?

时间:2018-01-24 17:19:05

标签: xcode unit-testing tdd xctest xcode-debugger

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

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

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

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

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

2 个答案:

答案 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))
}

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

相关问题