百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

「BDD系列」 Cucumber 框架Java版从零开始

yuyutoo 2025-02-17 14:38 4 浏览 0 评论

欢迎开启Cucumber之旅。Cucumber是当前最流行的行为驱动开发框架(Behavior-Driven Development BDD)之一,同时拥有大量的粉丝。我们在本系列培训里面将更深入地了解Cucumber以及其遵循软件开发模型。

Cucumber 是一个支持行为驱动开发 (BDD) 的测试框架。 它让我们可以用自然语言描述测试场景,例如关键字假如、当、那么等.Cucumber 支持多种开发语言,例如Java、JavaScript、Python、Go、PHP、C#、VB.NET等。

1 Cucumber 介绍

2.1 Cucumber

Cucumber是一个行为驱动开发工具(Behaviour-Driven Development,简称BDD).Cucumber读取以纯文本形式编写的可执行规范,并验证软件是否按照这些规范的要求执行。这些规范由多个示例或场景组成。例如:

1
2
3
4
场景: 用户输入错误的密码登录系统
  假设 用户输入了正确的用户名但密码错误
  当 用户点击登录按钮
  那么 系统提示用户名或密码错误

每个场景都是Cucumber需要执行的测试步骤列表,Cucumber验证待测软件是否满足场景步骤,并为每个测试场景步骤生成测试报告显示验证通过或失败情况。

2.2 Gherkin

Gherkin是一套语,通过套语法Cucumber就可以理解(解析)纯文本的语法结构,Cucumber执行的场景用例就是用Gherkin语法写的。
Gherkin的功能包括:

  • 明确的可执行的规范
  • 使用Cucumber进行自动化测试
  • 记录系统的实际行为

Cucumber可以使用不同的自然语言来描述场景,用户团队可以选择自己熟悉的语言来使用Cucumber。Gherkin文档以.feature的文本文件格式来保存,通常可以上传到Git或SVN等版本控制服务器上进行版本管理。

2.3 步骤定义

步骤是Gherkin和自动化测试代码的连接器。步骤定义约定了应该执行的步骤,步骤中可以实现对待测对象(UT、API、UI)的测试执行代码。

2 安装Cucumber及相关工具

这里只介绍Cucumber-JVM 的安装,Cucumber-JVM是Cucumber的Java版,支持Java常见的工程管理工具Maven、Grandle。JDK 推荐使用JDK 1.8

2.1 安装JDK

Oracle JDK 下载地址:

1
https://www.oracle.com/java/technologies/downloads/#java8

? Open JDK 下载地址:

1
https://www.openlogic.com/openjdk-downloads

2.2 安装Maven

Maven 建议使用3.6.0以上版本。

Maven 下载地址:

1
https://maven.apache.org/download.cgi

2.3 安装IDE

2.3.1 IntelliJ IDEA

Intellij IDEA 推荐使用Cucumber插件,Cucumber插件具有下列功能:

语法和错误高亮显示;自动补全;步骤定义快速修复;步骤定义和步骤间快速切换;功能特性文件中国际化语言支持;

Intellij IDEA 下载地址:

1
https://www.jetbrains.com/zh-cn/idea/promo/

2.3.2 Eclipse


Cucumber Eclipse Plugin 插件具有以下特性:

支持Cucumber-Java8 Lambda语法功能特性文件内容辅助步骤定义向导功能特性步骤自动生成国际化关键字高亮产品特性格式化展现产品特性运行

Eclipse 下载地址:

1
https://www.eclipse.org/downloads/packages/

3 创建Cucumber项目

3.1 引入依赖

创建一个Maven项目,pom.xml文件中引入Cucumber所需的依赖包。
pom.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62

    4.0.0

    org.bddall
    cucumber-java-starter
    0.0.1
    jar
    Cucumber-Java Starter

    
        UTF-8
        1.8
        4.13.2
        6.10.4
        3.8.1
        2.22.2
    

    
        
            io.cucumber
            cucumber-java
            ${cucumber.version}
            test
        

        
            io.cucumber
            cucumber-junit
            ${cucumber.version}
            test
        

        
            junit
            junit
            ${junit.version}
            test
        
    

    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                ${maven.compiler.version}
                
                    UTF-8
                    ${java.version}
                    ${java.version}
                
            
            
                org.apache.maven.plugins
                maven-surefire-plugin
                ${maven.surefire.version}
            
        
    

3.2 创建工程目录结构

cucumber-jvm Maven工程目录下一般包括一下目录

  • src/main/java //Java代码
  • src/main/resources //配置文件资源
  • src/test/java //测试Java代码
  • src/test/resources // features 文件和其它配置文件
  • src/pom.xml //Maven工程文件,管理依赖包和构建配置

3.3 一个简单测试场景

在src/test/resources目录下创建一个login.feature文件,文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
# language: zh-CN

功能: 用户登录

  场景大纲: 账号密码登录
  假如 用户进入登录页面
  当 用户需要输入用户名和密码然后点击登录按钮
  那么 用户登录平台并显示当前姓名

    @positive
    例子: 有效用户名和密码
      | UserName    | Password | NickName |
      | devops      | 123456   | bdd      |

在src/test/java目录下创建一个cucumber启动类 RunCucumberTest,启动类配置如下:

1
2
3
4
5
@RunWith(Cucumber.class)
@CucumberOptions(plugin = {"pretty", "html:target/cucumber-report.html"})
public class RunCucumberTest {
}

在src/test/java目录下创建一个步骤定义类 LoginStepdefs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package org.bddall.cucumber;

import io.cucumber.java.zh_cn.假如;
import io.cucumber.java.zh_cn.当;
import io.cucumber.java.zh_cn.那么;

public class LoginStepdefs {
    @假如("用户进入登录页面")
    public void 用户进入登录页面() {
        // Write code here that turns the phrase above into concrete actions
        throw new io.cucumber.java.PendingException();
    }
    @当("用户需要输入用户名devopstools和密码123456然后点击登录按钮")
    public void 用户需要输入用户名devopstools和密码123456然后点击登录按钮() {
        // Write code here that turns the phrase above into concrete actions
        throw new io.cucumber.java.PendingException();
    }
    @那么("用户登录平台并显示当前姓名bdd")
    public void 用户登录平台并显示当前姓名bdd() {
        // Write code here that turns the phrase above into concrete actions
        throw new io.cucumber.java.PendingException();
    }
}

我们将在后续的文章中介绍如何在步骤定义中加入测试业务代码,例如API测试或Selenium的Web应用测试。

3.4 测试结果报告

运行一下命令:

1
mvn test

浏览器打开html测试报告,Cucumber测试报告放在
target/cucumber-report.html

Demo运行效果


相关推荐

微软Win10/Win11版Copilot上线:支持OpenAI o3推理模型

IT之家4月3日消息,科技媒体WindowsLatest昨日(4月2日)发布博文,报道称Windows10、Windows11新版Copilot应用已摘掉Beta帽...

WinForm 双屏幕应用开发:原理、实现与优化

在当今的软件开发领域,多屏幕显示技术的应用越来越广泛。对于WinForm应用程序来说,能够支持双屏幕显示不仅可以提升用户体验,还能满足一些特定场景下的业务需求,比如在演示、监控或者多任务处理等场景...

推荐一个使用 C# 开发的 Windows10 磁贴美化小工具

...

OpenJDK 8 安装(openjdk 8 windows)

通常OpenJDK8和11都能互相编译和通用。我们建议使用11,但是如果你使用JDK8的话也是没有问题的。建议配置使用OpenJDK,不建议使用OracleJDK,主要是因为版...

基于 Linux 快速部署 OpenConnect VPN 服务(ocserv 实战指南)

一、前言在如今远程办公和内网穿透需求日益增长的背景下,搭建一套安全、稳定、高效的VPN系统显得尤为重要。OpenConnectServer(ocserv)是一个开源、高性能的VPN服务端软件...

巧妙设置让Edge浏览器更好用(edge怎么设置好用)

虽然现在新版本的Edge浏览器已经推出,但是毕竟还处于测试的状态中。而Win10系统里面自带的老版Edge浏览器,却越来越不被人重视。其实我们只需要根据实际情况对老版本的Edge浏览器进行一些简单的设...

WPF做一个漂亮的登录界面(wpf页面设计)

...

微软开源博客工具Open Live Writer更新:多项Bug修复

OpenLiveWriter前身是WindowsLiveWriter,是微软WindowsLive系列软件之一,曾经是博主们非常喜爱的一款所见即所得博文编辑工具,支持离线保存,还支持图像编辑...

基于OpenVINO的在线设计和虚拟试穿 | OPENAIGC大赛企业组优秀作品

在第二届拯救者杯OPENAIGC开发者大赛中,涌现出一批技术突出、创意卓越的作品。为了让这些优秀项目被更多人看到,我们特意开设了优秀作品报道专栏,旨在展示其独特之处和开发者的精彩故事。...

C#开源免费的Windows右键菜单管理工具

...

Windows10或11中隐藏的功能,用它再也不用担心电脑中病毒!

...

Python open函数详解(python open函数源码)

演示环境,操作系统:Win1021H2(64bit);Python解释器:3.8.10。open是Python的一个内置函数,一般用于本地文件的读写操作。用法如下。my_file=open(fi...

Windows 11 安装 Docker Desktop(Windows 11 安装助手 Windows 易升 关系)

...

Windows 11 新版发布:屏幕亮度自适应控制,小组件界面重新设计!

...

世界上最好用的Linux发行版之一,OpenSUSE安装及简单体验

背景之前无意在论坛里看到openSUSE的Linux发行版,被称为世界上最好用的Linux发行版之一(阔怕),一直想体验一下,于是这期做一个安装和简单体验教程吧。...

取消回复欢迎 发表评论: