cucumber jvm_用Cucumber JVM编写BDD测试

cucumber jvm

Cucumber JVM是编写BDD测试的出色工具。在本文中,我想对Cucumber JVM的BDD进行介绍。

让我们开始吧…

什么是BDD?



问题

简而言之,BDD试图解决“通过示例理解需求”的问题

bdd

BDD工具

有许多可用于BDD的工具,有趣的是,您可以在列表中找到很多蔬菜名称:)Cucumber,菠菜,生菜,JBehave,Twist等。在这些Cucumber中,简单易用。

CucumberJVM

Cucumber用Ruby编写,而Cucumber JVM是适用于Java,Scala,Groovy,Clojure等流行JVM语言的Cucumber的实现。

Cucumber堆栈

叠
我们使用“无处不在”语言编写功能和场景,然后使用步骤定义和支持代码来实现它们。

功能文件和小Cucumber

首先,您需要编写一个.feature文件。通常,功能文件以Feature关键字开头,后跟Scenario 。 每个方案都包含多个步骤。 Cucumber为此使用了Cucumber。 Gherkin是一种商业可读的特定于域的语言,可让您描述软件的行为而无需详细说明该行为的实现方式。

例:

Feature: Placing bets       Scenario: Place a bet with cash balance         Given I have an account with cash balance of 100        When I place a bet of 10 on "SB_PRE_MATCH"      Then the bet should be placed successfully      And the remaining balance in my account should be 90

如您所见,特征文件更像是带有小Cucumber关键字的口语,例如Feature,Scenario,Give,When,When,And和#。

步骤定义

在完成了具有不同场景的功能文件后,下一步就是通过编写步骤定义使场景栩栩如生。 Cucumber使用正则表达式将步骤与实际步骤定义进行映射。 可以使用您选择的JVM语言编写步骤定义。 映射步骤定义时,将忽略关键字。 因此,参考上面的示例功能,我们将必须为所有四个步骤编写步骤定义。 使用IDE插件为您生成存根。

import cucumber.api.java.en.And;        
import cucumber.api.java.en.Given;       
import cucumber.api.java.en.Then;        
import cucumber.api.java.en.When;        
public class PlaceBetStepDefs {      @Given("^I have an account with cash balance of (\\d+) $")      public void accountWithBalance(int balance) throws Throwable {      // Write code here that turns the phrase above into concrete actions        //throw new PendingException();         }       @When("^I place a bet of (\\d+) on \"(.*?)\"$")         public void placeBet(int stake, String product) throws Throwable {      // Write code here that turns the phrase above into concrete actions        // throw new PendingException();        }       @Then("^the bet should be placed successfully$")        public void theBetShouldBePlacedSuccessfully() throws Throwable {       // Write code here that turns the phrase above into concrete actions        //throw new PendingException();         }       @And("^the remaining balance in my account should be (\\d+)$")      public void assertRemainingBalance(int remaining) throws Throwable {        // Write code here that turns the phrase above into concrete actions        //throw new PendingException();         }       
}

支持代码

下一步是使用支持代码来支持您的步骤定义。 例如,您可以进行REST调用来执行该步骤,或者进行数据库调用,或者使用诸如selenium之类的Web驱动程序。 这完全取决于实施情况。 获得响应后,您可以使用期望的结果来断言它,或者将其映射到域对象。 例如,您可以使用Selenium Web驱动程序来模拟登录到站点:

protected WebDriver driver;         
@Before("@startbrowser")         
public void setup() {        System.setProperty("webdriver.chrome.driver", "C:\\devel\\projects\\cucumberworkshop\\chromedriver.exe");      driver = new ChromeDriver();        
}        
@Given("^I open google$")        
public void I_open_google() throws Throwable {       driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);         driver.get("https://www.google.co.uk");         
}

表现场景

Cucumber提供了更多选项,可以更好地组织您的方案。

  • 背景 –使用它来定义所有方案通用的步骤
  • 数据表 –您可以表格式写入输入数据
  • 方案大纲-方案的占位符,可以对称为示例的一组数据执行。
  • 标签和子文件夹来组织您的功能-标签更像是文档的便笺。

依赖注入

通常,您可能不得不将一步创建的信息传递给另一步。 例如,您在第一步中创建一个域对象,然后在第二步中需要使用它。 做到这一点的干净方法是通过依赖注入。 Cucumber为主要的DI容器(例如Spring,Guice,Pico等)提供模块。

执行Cucumber

在IntelliJ IDE上运行Cucumber非常容易。 它也可以与您的构建系统集成。 您还可以使用其他选项控制要运行的测试。

报告选项

有许多可用于报告的插件。 例如,您可以将Master Thought插件用于报告。

参考资料

《 Cucumber for Java》一书 –这是一本非常好的书,这是您入门所需的全部。 文档 GitHub链接那就是所有的人。 希望你喜欢它。 圣诞快乐! 请享用。

翻译自: https://www.javacodegeeks.com/2015/12/writing-bdd-tests-cucumber-jvm.html

cucumber jvm

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/336707.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

模拟模型学习 几何布朗运动_Java的几何布朗运动

模拟模型学习 几何布朗运动维纳过程是一个连续时间的随机过程,以纪念诺伯特维纳。 通常用于用随机成分表示噪音或财务状况。 可以计算几何布朗运动以可视化某些界限(以分位数表示)以暗示绝对范围。 为了进行计算,需要以下参数&am…

动态调整线程池_调整线程池的重要性

动态调整线程池无论您是否知道,您的Java Web应用程序很可能都使用线程池来处理传入的请求。 这是许多人忽略的实现细节,但是迟早您需要了解如何使用该池以及如何为您的应用程序正确调整池。 本文旨在说明线程模型,线程池是什么以及正确配置线…

java系统架构师有的特质_Java中特质模式的定义

java系统架构师有的特质在本文中,我将介绍特征的概念,并为您提供一个具体示例,说明如何在Java中使用它们以减少对象设计中的冗余。 我将首先提出一个虚构的案例,其中可以使用特征来减少重复,然后以使用Java 8的特征模式…

tdd java_Java TDD简介–第2部分

tdd java再次问好! 在上一篇博客文章中,我在没有紧密引用Java的情况下总体上解释了TDD理论 ,但是在这一部分中,我们开始进行TDD实践。 我们的目标是遍历TDD的所有阶段:从需求分析到测试代码的重构。 我们将在具有Java&…

计算机怎么没有桌面文件夹名称大全,你的电脑文件总是找不到?是时候学习文件夹分类整理了...

我们常常说做好办公整理,我们工作起来才更有效率;此处的办公整理不单单是对办公桌整理整齐,电脑里面的文件也需要定期整理,你有没有发现常常找一个文件的时候却总是找不到?那么此时就应该学习文件夹分类整理了&#xf…

selenide_使用Selenide进行有效的UI测试

selenide等待奇迹 圣诞节是奇迹的时刻。 在新的一年的前夕,我们都会制定下一个计划。 我们希望所有问题都将在最后一年消失,在来年出现奇迹。 每个Java开发人员都梦想着奇迹,使他成为世界上最有效的Java开发人员。 我想向你展示这样的奇迹…

win10无法更改计算机设置,Win10“无法保存ip设置,请检查一个或多个设置并重试”的解决方法...

近期有网友想要在Win10系统中手动设置本机IP地址,但是填写完毕之后却提示了“无法保存ip设置,请检查一个或多个设置并重试”,那么遇到这个问题,我们要如何解决呢?下面装机之家分享一下Win10“无法保存ip设置,请检查一个或多个设置…

24段魔尺拼图指南_拼图项目动手指南

24段魔尺拼图指南Jigsaw项目将把模块化引入Java平台,根据原始计划,它将在12月10日完成功能。 所以我们在这里,但拼图在哪里? 在过去的六个月中肯定发生了很多事情: 原型问世 ,内部API的迫在眉睫的删除引起…

sql 解析 java_将Java 8流解析为SQL

sql 解析 java当Java 8发行并且人们开始流式处理各种东西时,不久之后他们就开始想象如果可以以相同的方式使用数据库将有多大的潜力。 本质上,关系数据库由以表状结构组织的巨大数据块组成。 这些结构非常适合进行过滤和映射操作,如SQL语言的…

杭州电子科技大学保研计算机,杭州电子科技大学计算机学院计算机科学与技术(一级学科)保研细则...

杭州电子科技大学计算机学院计算机科学与技术(一级学科)保研细则信息,是考研之前需要获取相应的考研信息,比如考试大纲、招考专业、招考目录等等基本信息,这些内容是进行考研前期工作的必要准备。考生可以从各院校的研招网进行查询&#xff0…

返回路径平面上的间隙_裁切机的上刀下刀如何调整?

每天都在使用裁切机时,由于各种因素往往会出现上刀、下刀现象(也称凸刀、凹刀现象),给后面的套准带来困难。在此小编对上刀、下刀现象的产生原因做一分析与总结。01千斤压力不够(1)机械压力弹簧弹力不够。此时必须增大压力,如果增大到最大位置…

pcb板材的tg是什么_做到这6点,PCB过回焊炉不会出现板弯及板翘!

【维文信PCBworld】在PCB板子过回焊炉容易发生板弯及板翘,大家都知道,那么如何防止PCB板子过回焊炉发生板弯及板翘,下面就为大家阐述下:1.降低温度对PCB板子应力的影响既然「温度」是板子应力的主要来源,所以只要降低回…

java-ee-api_刷新器-Java EE 7概览

java-ee-api随着红帽JBoss企业应用平台7(EAP 7)的迫在眉睫,甚至WebLogic Server刚刚获得Java EE 7认证,我认为现在应该是时候对Java Enterprise Edition 7进行一些更新了。功能,并指向更多资源。 Java EE 7 –开发人员…

层 数据仓库_小尝试:基于指标体系的数据仓库搭建和数据可视化

关于作者:小姬,某知名互联网公司产品专家,对数据采集、生产、加工有所了解,期望多和大家交流数据知识,以数据作为提出好问题的基础,挖掘商业价值。0x00 前言我将整理文章分享数据工作中的经验,因…

计算机中级职称报考入口,2020年9月计算机职称考试报名流程(附入口)

2020年9月计算机等级报名公告正在陆续公布,计算机等级考试网上怎么报名?小编为大家整理计算机等级报名流程如下:2020年9月计算机等级报名流程一、注册通行证考生登入报名网页后,点击“用户注册”按钮,根据网页提示&…

简单工厂抽象工厂工厂方法_让工厂美丽

简单工厂抽象工厂工厂方法每个名副其实的Java程序员都知道Factory Pattern 。 这是一种便捷,标准化的方法,它通过教一个组件如何捕鱼而不是将它们交给它们来减少耦合。 但是,在使用大型系统时,该模式确实会向系统添加很多样板代码…

内蒙古大学计算机组成原理实验,内蒙古大学计算机组成原理期末练习0

内蒙古大学计算机组成原理期末练习0 (4页)本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!9.9 积分第 1 页 共 4 页 《《计算机组成原理计算机组成原理》》期末练习期末练习 班级 专业 姓名 学号 编号 …

dev的编辑器不支持getchar吗_“两头婚兴起”:你支持不娶不嫁,孩子随父姓也随母姓吗?...

何为两头婚?简单来说就是男不娶,女不嫁,没有彩礼也没有嫁妆的说法。男女俩人结婚之后没有谁到谁家里之说,两夫妻过自己的小日子,与各自的原生家庭保持一定的联系。婚后生育两个孩子,一个随父姓,…

全国计算机证件照要露耳朵吗,结婚证照片要露耳朵么 结婚登记照露一只耳朵行吗...

结婚证件照,这是可以在在民政局里面照的,也是可以在外面的影楼照的,在外面影楼照的话,照出来会比较好看,就是价格有点贵。结婚证上面的照片是证件照,所以是有一定的要求的。露一只耳朵行不行呢?…

findfirst_当心findFirst()和findAny()

findfirst过滤Java 8 Stream ,通常使用findFirst()或findAny()来获取在过滤器中幸存的元素。 但这可能并不能真正实现您的意思,并且可能会出现一些细微的错误。 那么 从我们的Javadoc( 此处和此处 )可以看出,这两种方…