首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >既然我已经有了E2E测试,为什么还要写单元测试呢?

既然我已经有了E2E测试,为什么还要写单元测试呢?
EN

Stack Overflow用户
提问于 2017-11-25 14:01:14
回答 2查看 1.2K关注 0票数 2

如果我们已经在做E2E (end-to-end)测试了,我们还需要写单元测试吗?

考虑到我们在端到端测试中进行所有的功能测试,两者都做的利弊是什么?

EN

Stack Overflow用户

发布于 2017-11-25 14:42:33

因为E2E测试并不是单元测试的完美替代品。

特别是:

它们跑起来很慢

E2E测试使用的是实际服务,而不是模拟服务。真正的数据库比内存中模拟的数据库慢得多。您还必须构建整个项目,设置种子数据等。

如果我必须等待很长一段时间才能完成测试,我可能会更频繁地跳过它。

他们不会孤立失败

E2E测试告诉你整个场景都被破坏了,即“用户登录失败”。它们不会告诉您参与该方案的组件的哪个部分发生了故障。这使得判断代码的哪一部分导致测试失败变得更加困难。

它们损害了可重用性

您不能放心地插入系统的组件并将其放入另一个系统中。在新的环境中,不需要为该组件运行单元测试。

您不能对每个单元执行TDD

如果你想为你的系统开发一个新的组件(单元),并且在你的系统中使用TDD,那么如果没有单元测试,你就走进了死胡同。单元测试和测试开发是齐头并进的。

这就是说:

如果您的资源允许的话,

  • 应该同时拥有E2E测试和单元测试。
  • 只有E2E测试总比没有测试要好。

下面是一个完美的测试套件的很好的例子,叫做Testing Pyramid

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

票数 10
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47483097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档