黄瓜 vs 朱尼特

Posted

技术标签:

【中文标题】黄瓜 vs 朱尼特【英文标题】:Cucumber vs Junit 【发布时间】:2017-02-04 23:48:21 【问题描述】:

我想问一下 Cucumber 和 JUnit 之间的实际区别是什么。我根本没有和 Cucumber 合作过。找到了一些文档,但我非常感谢曾与这两者合作过的人的一些反馈(对高 lvl 概述感兴趣)。

分解一下——我感兴趣的是什么(我将使用 Selenium 而不是 Protractor):

    Cucumber 与 Junit 有什么不能做的事。 什么更容易使用(编码,编写测试的速度)? 两者都适用于页面对象?

我需要完成的一些事情

    测试 CSS 样式 测试页面响应能力 WebElements 上的标准操作(点击、获取数据等) 断言。

除此之外的任何内容都非常受欢迎。非常感谢您对此的回答,谢谢!

【问题讨论】:

看看QAF-gherkin客户端qmetry.github.io/qaf/latest/qaf-gherkin-client.html这里你检查文档qmetry.github.io/qaf/qaf-2.1.9/gherkin_client.html 【参考方案1】:

Cucumber 似乎使某些东西更加用户友好,但我认为业务分析师并不真正关心它是什么。最终,开发人员必须编写单元测试、集成测试、黄瓜测试(因此 Cucumber 对已经编写过单元测试和集成测试的开发人员毫无意义,业务分析师不在乎,因为他们已经提供了他们想要的东西)。

【讨论】:

【参考方案2】:

JUnit 和 Cucumber 的目标不同。它们相互补充而不是相互替代。

Cucumber 和 Junit 有什么不能做的事。

您可以用 JUnit 做任何您不能用 Cucumber 做的事情。反之亦然。

不同之处在于,JUnit 的目标是测试,而 Cucumber 的目标是与非技术人员协作。非技术人员不会理解单元测试的作用。但是,他们将能够理解并验证用 Gherkin 编写的示例。

什么更容易使用(编码,编写测试的速度)?

使用 Cucumber 会产生更多开销。您必须将每个步骤作为一种方法来实现,而不仅仅是一个测试方法,就像使用 JUnit 时所做的那样。使用纯文本表达示例所获得的可读性有时值得付出额外的努力。

两者都适用于页面对象?

页面对象是您正在验证的网页的抽象。这是您作为开发人员/测试人员编写的课程。 JUnit 和 Cucumber 都可以使用页面对象。事实上,从这个角度来看,工具之间没有区别。

选择使用 JUnit 还是 Cucumber 是粒度和受众的问题。

一个运作良好的工作流程是混合工具。定义应用程序应如何使用 BDD(Cucumber、Gherkin)工作的示例。使用 Cucumber 实现这些场景。然后,使用 JUnit 制定对高层业务利益相关者可能重要但非必要重要的细节。考虑一些重要但对利益相关者来说细节过多的极端案例。

此处提供了描述这种组合的图片:https://cucumber.io/images/home/bdd-cycle.png

我不久前写了一篇博文,谈到了适合这项工作的工具:http://www.thinkcode.se/blog/2016/07/25/the-right-tool-for-the-job

正确的工具可能是 Cucumber。它也可以是 JUnit。这完全取决于您的观众。

【讨论】:

谢谢,这真的结束了这场辩论,至少对我而言 观众总是有问题吗?我的意思是,如果您正在编写普通的旧单元测试,您会使用 cucumber 吗? 如果受众是开发人员,我不会考虑 Cucumber。我会将 JUnit 视为一种测试工具。如果一个示例必须由业务分析师或产品所有者确认,我会考虑将 Cucumber 作为一种交流工具,每个人都可以阅读和理解示例。在那种情况下,我使用 Cucumber 进行通信,而不是作为测试工具。【参考方案3】:

简单地说,这两者在完全不同的抽象层次上工作。

JUnit主要是一个自动化框架;使您能够使用 Java 编程语言快速编写测试用例。它提供了易于声明的注释:“这里的这个方法是一个 JUnit 测试”。它旨在作为 unit tests 的框架;但许多人也使用它来推动全面的“集成”或“功能”测试。

另一方面,

Cucumber 工作在更高层次的抽象上。您首先用纯文本编写“测试描述”。导致可能的关键区别:您不需要了解 Java 来编写黄瓜测试(您只需要一个 Java 程序员提供“胶水代码”,允许 Cucumber 将您的文本输入转换为一些可执行的代码) .

从这个意义上说,您不知何故要求我们在这里比较苹果和萝卜;因为有人会将这两个工具集用于一组不同的“问题解决方案”。但正如划线的那样;您还可以使用 JUnit 来驱动“更大”的测试;所以这两个工具之间的主要区别在于您正在处理的抽象级别。

编辑:您的评论是正确的;由于这些工具用于不同的“设置”,因此您不应期望仅非技术人员就能够使用 cucumber 编写涵盖所有内容的良好测试。 Cucumber 是一种让非技术人员参与创建测试的好方法;但最终,您正在解决技术(Java 相关)问题;因此,您有时需要 Java 编程专业知识。要么“在同一个人内”;或者至少在团队中的不同人员中。

【讨论】:

感谢您的回答。基于此,由于 Cucumber 有不同的方法(“您首先用纯文本编写“测试描述”。导致可能的关键区别:您不需要了解 Java 来编写黄瓜测试“)不会当我想深入测试时,这会导致一些问题吗?或者遇到 Cucumber 仅凭此无法解决的问题?

以上是关于黄瓜 vs 朱尼特的主要内容,如果未能解决你的问题,请参考以下文章

黄瓜的英语发音怎么读

黄瓜怎么读

Node.js BDD。黄瓜,小黄瓜还是黄瓜? [关闭]

黄瓜英语怎么读

资产监测设备助力黄瓜种植,提升黄瓜产量

IT简史 | 约瑟夫·卡尔·罗布尼特·利克莱德 J. C. R. Licklider - 互联网之父