首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHPSpec和Behat

PHPSpec和Behat
EN

Stack Overflow用户
提问于 2021-09-12 15:27:16
回答 1查看 106关注 0票数 0

我刚开始学习BDD的概念。

为此,我学习了PHPSpec和Behat,但我不清楚为什么需要同时使用这两种语言。我知道behat用于功能/验收测试,phpspec主要用于单元测试,但我在上面找到的文章和视频基本上是对代码进行两次测试:一次用behat (用场景),一次用PHPSpec。有人能用简单的例子向我解释一下有什么区别吗?我什么时候需要使用behat和whan?

提前谢谢各位,比尔。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-20 07:47:20

在开始回答之前,我想指出的是,下面的答案比"phpspec和behat“的答案更一般。

正如您正确地指出的,phpspec是一个设计用来编写单元测试的工具,而behat是用于其他类型测试的工具(比如从集成到e2e/烟雾测试)。到目前一切尚好。因此,现在我们可以抽象和区别于单元测试工具和其他测试工具。

让我们开始定义什么是单元测试,什么不是。单元测试是针对系统的“小”部分(单元)进行的一种测试。通常,它的焦点是单个类或方法(而不是总是正确的)。单元测试促进快速重构,因为它们运行快和孤立。请把注意力集中在fastisolation上,我们很快就会回到他们身上。

其他类型的测试更麻烦,也更适合于测试某些组件之间的交互,或者整个功能,或者用户使用的“整体”系统。为什么这么麻烦?因为您可能必须设置一个数据库,您可能需要运行一个and服务器,您可能需要一个像selenium这样的浏览器模拟器,等等。因此,这种测试要比单元测试慢得多。此外,当错误发生在其他测试中,但是单元性,因为您有一个“整体”的有趣,这将是更痛苦的寻找错误,而单元测试,至少,您知道是哪类(或其中的一组)是导致错误。

话虽如此,还记得关于单元测试速度和隔离的声明吗?速度可以帮助您“更快地失败”(您不需要等待整个系统引导,不管它对您的项目意味着什么),并且以一种更“本地化”的方式(隔离)失败。

我的建议是遵循试验金字塔:许多单元测试(例如,I/O的所有可能排列),以及对集成和上面的集成有价值的测试。仅举一个例子:您可以测试一个存储库(使用DB进行迭代,以便对某个特定的查询不能处理的事情),您可以测试要达到的登录页面或主页(作为应用程序健康状态的状态)等等。

我的回答只是一个简短的总结,希望能把你推向正确的方向。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69152829

复制
相关文章

相似问题

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