如果我们已经在做E2E (end-to-end)测试了,我们还需要写单元测试吗?
考虑到我们在端到端测试中进行所有的功能测试,两者都做的利弊是什么?
发布于 2017-11-25 14:42:33
因为E2E测试并不是单元测试的完美替代品。
特别是:
它们跑起来很慢
E2E测试使用的是实际服务,而不是模拟服务。真正的数据库比内存中模拟的数据库慢得多。您还必须构建整个项目,设置种子数据等。
如果我必须等待很长一段时间才能完成测试,我可能会更频繁地跳过它。
他们不会孤立失败
E2E测试告诉你整个场景都被破坏了,即“用户登录失败”。它们不会告诉您参与该方案的组件的哪个部分发生了故障。这使得判断代码的哪一部分导致测试失败变得更加困难。
它们损害了可重用性
您不能放心地插入系统的组件并将其放入另一个系统中。在新的环境中,不需要为该组件运行单元测试。
您不能对每个单元执行TDD
如果你想为你的系统开发一个新的组件(单元),并且在你的系统中使用TDD,那么如果没有单元测试,你就走进了死胡同。单元测试和测试开发是齐头并进的。
这就是说:
如果您的资源允许的话,
下面是一个完美的测试套件的很好的例子,叫做Testing Pyramid

这篇来自谷歌测试博客的文章详细介绍了:Just Say No to More End-to-End Tests。虽然我不同意不应该编写E2E测试,但它深入地说明了每种测试的优缺点。
https://stackoverflow.com/questions/47483097
复制相似问题