关于经典的测试模式安排-执行-断言 http://c2.com/cgi/wiki?ArrangeActAssert,我经常发现自己在 Act 之前添加了反断言。这样我就知道传递的断言确实是作为操作的结果传递的。
我认为它类似于红绿重构中的红色,只有当我在测试过程中看到红色条时,我才知道绿色条意味着我已经编写了有所作为的代码。如果我写了一个通过的测试,那么any代码将满足它;类似地,对于 Arrange-Assert-Act-Assert,如果我的第一个断言失败,我知道任何法案都会通过最终的断言 - 因此它实际上并没有验证有关该法案的任何内容。
您的测试遵循这种模式吗?为什么或者为什么不?
Update澄清:最初的断言本质上与最终断言相反。这并不是断言 Arrange 有效;而是说 Arrange 有效。这是一个断言,该法案尚未发挥作用。
这不是最常见的事情,但仍然很常见,有自己的名字。这种技术称为守卫断言。你可以在这本优秀书籍的第490页找到它的详细描述xUnit 测试模式作者:Gerard Meszaros(强烈推荐)。
通常,我自己不会使用这种模式,因为我发现编写一个特定的测试来验证我认为需要确保的任何前提条件更为正确。如果前提条件失败,这样的测试应该总是失败,这意味着我不需要将它嵌入到所有其他测试中。这可以更好地隔离关注点,因为一个测试用例仅验证一件事。
对于给定的测试用例,可能需要满足许多先决条件,因此您可能需要多个 Guard Assertion。不必在所有测试中重复这些测试,而是为每个先决条件进行一个(且仅一个)测试,使您的测试代码更易于维护,因为这样您的重复次数就会减少。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)