Cucumber 框架Java版從零開始 cucumber

歡迎開啟Cucumber之旅 。Cucumber是當前最流行的行為驅動開發框架(Behavior-Driven Development BDD)之一,同時擁有大量的粉絲 。我們在本系列培訓里面將更深入地了解Cucumber以及其遵循軟件開發模型 。
Cucumber 是一個支持行為驅動開發 (BDD) 的測試框架 。它讓我們可以用自然語言描述測試場景,例如關鍵字假如、當、那么等.Cucumber 支持多種開發語言,例如Java、JavaScript、Python、Go、PHP、C#、VB.NET等 。
Cucumber JVM 啟航
1 Cucumber 介紹 2.1 Cucumber Cucumber是一個行為驅動開發工具(Behaviour-Driven Development,簡稱BDD).Cucumber讀取以純文本形式編寫的可執行規范,并驗證軟件是否按照這些規范的要求執行 。這些規范由多個示例或場景組成 。例如:
1234場景: 用戶輸入錯誤的密碼登錄系統  假設 用戶輸入了正確的用戶名但密碼錯誤  當 用戶點擊登錄按鈕  那么 系統提示用戶名或密碼錯誤 每個場景都是Cucumber需要執行的測試步驟列表,Cucumber驗證待測軟件是否滿足場景步驟,并為每個測試場景步驟生成測試報告顯示驗證通過或失敗情況 。
2.2 Gherkin Gherkin是一套語,通過套語法Cucumber就可以理解(解析)純文本的語法結構,Cucumber執行的場景用例就是用Gherkin語法寫的 。
Gherkin的功能包括:

  • 明確的可執行的規范
  • 使用Cucumber進行自動化測試
  • 記錄系統的實際行為
Cucumber可以使用不同的自然語言來描述場景,用戶團隊可以選擇自己熟悉的語言來使用Cucumber 。Gherkin文檔以.feature的文本文件格式來保存,通??梢陨蟼鞯紾it或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 下載地址:
1https://www.oracle.com/java/technologies/downloads/#java8 Open JDK 下載地址:
1https://www.openlogic.com/openjdk-downloads 2.2 安裝Maven Maven 建議使用3.6.0以上版本 。
Maven 下載地址:
1https://maven.apache.org/download.cgi 2.3 安裝IDE 2.3.1 IntelliJ IDEA

Intellij IDEA 推薦使用Cucumber插件,Cucumber插件具有下列功能:
語法和錯誤高亮顯示;自動補全;步驟定義快速修復;步驟定義和步驟間快速切換;功能特性文件中國際化語言支持;
Intellij IDEA 下載地址:
1https://www.jetbrains.com/zh-cn/idea/promo/ 2.3.2 Eclipse


Cucumber Eclipse Plugin 插件具有以下特性:
支持Cucumber-Java8 Lambda語法功能特性文件內容輔助步驟定義向導功能特性步驟自動生成國際化關鍵字高亮產品特性格式化展現產品特性運行
Eclipse 下載地址:
1https://www.eclipse.org/downloads/packages/ 3 創建Cucumber項目 3.1 引入依賴 創建一個Maven項目,pom.xml文件中引入Cucumber所需的依賴包 。
pom.xml
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>org.bddall</groupId>    <artifactId>cucumber-java-starter</artifactId>    <version>0.0.1</version>    <packaging>jar</packaging>    <name>Cucumber-Java Starter</name>    <properties>        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>        <java.version>1.8</java.version>        <junit.version>4.13.2</junit.version>        <cucumber.version>6.10.4</cucumber.version>        <maven.compiler.version>3.8.1</maven.compiler.version>        <maven.surefire.version>2.22.2</maven.surefire.version>    </properties>    <dependencies>        <dependency>            <groupId>io.cucumber</groupId>            <artifactId>cucumber-java</artifactId>            <version>${cucumber.version}</version>            <scope>test</scope>        </dependency>        <dependency>            <groupId>io.cucumber</groupId>            <artifactId>cucumber-junit</artifactId>            <version>${cucumber.version}</version>            <scope>test</scope>        </dependency>        <dependency>            <groupId>junit</groupId>            <artifactId>junit</artifactId>            <version>${junit.version}</version>            <scope>test</scope>        </dependency>    </dependencies>    <build>        <plugins>            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-compiler-plugin</artifactId>                <version>${maven.compiler.version}</version>                <configuration>                    <encoding>UTF-8</encoding>                    <source>${java.version}</source>                    <target>${java.version}</target>                </configuration>            </plugin>            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-surefire-plugin</artifactId>                <version>${maven.surefire.version}</version>            </plugin>        </plugins>    </build></project> 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文件,文件內容如下:
12345678910111213# language: zh-CN功能: 用戶登錄  場景大綱: 賬號密碼登錄  假如 用戶進入登錄頁面  當 用戶需要輸入用戶名<UserName>和密碼<Password>然后點擊登錄按鈕  那么 用戶登錄平臺并顯示當前姓名<NickName>    @positive    例子: 有效用戶名和密碼      | UserName    | Password | NickName |      | devops      | 123456   | bdd      | 在src/test/java目錄下創建一個cucumber啟動類 RunCucumberTest,啟動類配置如下:
12345@RunWith(Cucumber.class)@CucumberOptions(plugin = {"pretty", "html:target/cucumber-report.html"})public class RunCucumberTest {} 在src/test/java目錄下創建一個步驟定義類 LoginStepdefs
123456789101112131415161718192021222324package 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 測試結果報告 運行一下命令:
1mvn test 瀏覽器打開html測試報告,Cucumber測試報告放在
target/cucumber-report.html


Demo運行效果
【Cucumber 框架Java版從零開始 cucumber】

-- 展開閱讀全文 --

    推薦閱讀