了解测试(BDD) - 我是否可以跳过单元测试重复某些集成测试中已涵盖的内容?

时间:2011-11-17 11:56:16

标签: unit-testing tdd integration-testing bdd

注意:之前有类似的问题(BDD And Unit Testing),但它没有实际的直接答案。只需链接到该书。

假设我们测试个人资料页面。用户提交他的数据。

  • 验证失败 - 我们通知他,对象未更新。
  • 验证通过 - 他被重定向到包含已提交数据的个人资料页面。对象已更新。太酷了!

因此,如果我在BDD期间测试过验证是否正常工作,我是否需要使用单元测试仔细检查?或者我可以跳过它?在这种情况下,正确的做法是什么?为什么?

2 个答案:

答案 0 :(得分:6)

集成测试检查您的部件是否以正确的方式协同工作。

单元测试涵盖了每个部件本身的正确功能。

因此,答案分为两部分:

  1. 不,你不应该跳过它。集成测试在整个页面的上下文中测试了您的验证,包括其所有模块。一个进行验证的模块肯定应该有单元测试来测试它(单独测试单独测试)。
  2. 您永远不会使用集成测试和单元测试来测试相同的内容。在集成测试中,您测试了页面的行为,例如某些输入。在单元测试中,如果您正在测试自包含模块,您甚至可以忽略您在页面中。即使该模块验证了某些数据并做了一些决定。您只对单元测试验证过程和该决定的结果。

答案 1 :(得分:3)

如果验证逻辑很简单,请继续并忽略TDD教条。你不会从“适当的”单元测试中获得太多收益。

但是如果验证很复杂,你可能无法在集成测试中测试每个角落情况(或者如果你这样做,测试将需要很长时间才能运行并且很脆弱,即经常中断各种原因,当它们破裂时,有时很难确定原因。

单元测试对这些问题的影响要小得多,因此它们可以用来补充集成测试。