黄瓜与朱尼特

时间:2016-09-27 11:06:55

标签: java selenium junit cucumber

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

要打破它 - 我感兴趣的是什么(我将使用Selenium而不是Protractor):

  1. Cucumber对Junit有什么不能做的事情。
  2. 什么更容易使用(编码,编写测试的速度有多快)?
  3. 两者都使用Page Objects?
  4. 我需要做的一些事情

    1. 测试css样式
    2. 测试页面响应度
    3. WebElements的标准操作(点击,获取数据等)
    4. 断言。
    5. 除此之外的任何事情都受到欢迎。非常感谢您的回答,谢谢!

3 个答案:

答案 0 :(得分:3)

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

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

另一方面,

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

从这个意义上说,你在某种程度上要求我们在这里比较苹果和萝卜;因为人们会将这两个工具集用于一组不同的“问题解决方案”。但是排除在外;你也可以使用JUnit来推动“更大”的测试;因此,这两个工具之间的主要区别在于您正在处理的抽象级别。

编辑:您的评论是正确的;由于这些工具适用于不同的“设置”,因此您不应期望单独的非技术人员能够使用黄瓜来编写涵盖所有内容的良好测试。黄瓜是一种很好的方式,可以使非技术参与创建测试;但最后,你正在解决技术(java相关)问题;因此,您在某些时候需要Java编程专业知识。 “在同一个人中”;或者至少在团队中的不同人群中。

答案 1 :(得分:3)

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

  

黄瓜除了Junit之外还能做些什么。

您无法使用JUnit做任何与黄瓜无关的事情。反过来说。

不同之处在于,虽然JUnit的目标是测试,但Cucumber的目标是与非技术人员合作。非技术人员不会理解单元测试的作用。但是,他们将能够理解并验证用小黄瓜写的一个例子。

  

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

使用Cucumber时会有更多的开销。您必须将每个步骤作为一个方法实现,而不是像使用JUnit时那样只执行一个测试方法。您使用纯文本表达示例所获得的可读性有时是值得的。

  

两者都适用于Page Objects?

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

使用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

正确的工具可能是黄瓜。它也可以是JUnit。这一切都取决于你的观众。

答案 2 :(得分:0)

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