最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Serenity BDD 框架:Java + Selenium 全面指南(2026 最新)

 更新時(shí)間:2026年05月23日 14:08:39   作者:測(cè)試工程師成長之路  
Serenity BDD 提供了一個(gè)框架來整合 Selenium WebDriver,使得測(cè)試腳本既可讀又易于維護(hù),這篇文章給大家介紹Serenity BDD 框架:Java + Selenium 全面指南,感興趣的朋友一起看看吧

Serenity BDD(原名 Thucydides)是一個(gè)強(qiáng)大的開源測(cè)試自動(dòng)化框架,它在 Selenium WebDriver 基礎(chǔ)上增強(qiáng)了實(shí)時(shí)文檔生成、可維護(hù)性設(shè)計(jì)和企業(yè)級(jí)報(bào)告能力。以下是 2026 年你需要掌握的核心內(nèi)容:

??為什么選擇 Serenity + Selenium?(核心優(yōu)勢(shì))

特性優(yōu)勢(shì)
自動(dòng)生成實(shí)時(shí)文檔生成包含截圖、需求追溯和步驟敘述的豐富 HTML 報(bào)告
增強(qiáng)版頁面對(duì)象模式內(nèi)置 PageObject/PageComponent,支持智能等待、AJAX 處理和元素緩存
BDD 原生支持無縫集成 Cucumber、JBehave 等行為驅(qū)動(dòng)開發(fā)工具
并行執(zhí)行能力原生支持多瀏覽器/多線程并行測(cè)試
API + UI 混合測(cè)試通過 serenity-rest-assured 輕松結(jié)合 REST API 與 UI 測(cè)試
CI/CD 友好支持 Jenkins/GitHub Actions 插件,集成 Jira/Xray,支持需求標(biāo)簽
低維護(hù)成本智能定位器(@FindBy)、自動(dòng)截圖管理、自愈能力

??現(xiàn)代項(xiàng)目配置(Maven - 2026 推薦)

<!-- pom.xml -->
<!-- 公眾號(hào):測(cè)試工程師成長之路 -->
<properties>
    <serenity.version>4.0.0</serenity.version> <!-- 2026 年初最新穩(wěn)定版 -->
    <serenity.cucumber.version>4.0.0</serenity.cucumber.version>
    <junit.jupiter.version>5.10.1</junit.jupiter.version>
</properties>
<dependencies>
    <!-- Serenity 核心 -->
    <dependency>
        <groupId>net.serenity-bdd</groupId>
        <artifactId>serenity-core</artifactId>
        <version>${serenity.version}</version>
    </dependency>
    <!-- Cucumber BDD 支持 -->
    <dependency>
        <groupId>net.serenity-bdd</groupId>
        <artifactId>serenity-cucumber</artifactId>
        <version>${serenity.cucumber.version}</version>
    </dependency>
    <!-- JUnit 5 支持 -->
    <dependency>
        <groupId>net.serenity-bdd</groupId>
        <artifactId>serenity-junit5</artifactId>
        <version>${serenity.version}</version>
    </dependency>
    <!-- Selenium(由 Serenity 管理版本) -->
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>4.18.1</version> <!-- 兼容 Serenity 4.x -->
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>net.serenity-bdd.maven.plugins</groupId>
            <artifactId>serenity-maven-plugin</artifactId>
            <version>${serenity.version}</version>
            <executions>
                <execution>
                    <id>serenity-reports</id>
                    <phase>post-integration-test</phase>
                    <goals><goal>aggregate</goal></goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

??標(biāo)準(zhǔn)項(xiàng)目結(jié)構(gòu)(2026 推薦)

src/test/java
├── features/          # Cucumber .feature 文件(BDD 場(chǎng)景)
├── pages/             # 頁面對(duì)象類(繼承 PageObject)
├── steps/             # 步驟庫(帶 @Steps 注解的類)
├── tasks/             # Screenplay 模式任務(wù)(高級(jí)用法)
├── runners/           # 測(cè)試運(yùn)行器(@CucumberOptions 或 @ExtendWith)
└── hooks/             # 全局鉤子(Before/After)
src/test/resources
├── serenity.conf      # 核心配置(瀏覽器、超時(shí)、基礎(chǔ) URL)
└── environment/       # 環(huán)境專屬配置(dev/staging/prod)

??關(guān)鍵代碼模式(2026 最佳實(shí)踐)

1.頁面對(duì)象(現(xiàn)代寫法)

@DefaultUrl("https://app.example.com/login")
public class LoginPage extends PageObject {
    @FindBy(id = "username") WebElementFacade usernameField;
    @FindBy(id = "password") WebElementFacade passwordField;
    @FindBy(css = "button[type='submit']") WebElementFacade loginBtn;
    public void enterCredentials(String user, String pwd) {
        usernameField.type(user);
        passwordField.typeAndEnter(pwd); // 自動(dòng)提交
    }
    // 智能等待示例
    public boolean isErrorMessageVisible() {
        return $("#error-alert").isCurrentlyVisible();
    }
}

2.Screenplay 模式(復(fù)雜流程推薦)

public class Login implements Task {
    private final String username, password;
    public static Login as(String user, String pwd) {
        return Tasks.instrumented(Login.class, user, pwd);
    }
    @Override
    public <T extends Actor> void performAs(T actor) {
        actor.attemptsTo(
            Enter.theValue(username).into("#username"),
            Enter.theValue(password).into("#password").thenHit(Keys.ENTER),
            WaitUntil.the(LoginPage.SUCCESS_MESSAGE, isVisible()).forNoMoreThan(10).seconds()
        );
    }
}

3.serenity.conf(核心配置)

webdriver {
  driver = chrome
  chrome {
    arguments = ["--headless=new", "--disable-gpu", "--no-sandbox"]
  }
}
serenity {
  take.screenshots = FOR_FAILURES
  requirements.dir = "src/test/resources/features"
  output.directory = "target/site/serenity"
}
environments {
  default {
    base.url = "https://staging.example.com"
  }
  prod {
    base.url = "https://app.example.com"
  }
}

??報(bào)告能力亮點(diǎn)

執(zhí)行 mvn clean verify + mvn serenity:aggregate 后,自動(dòng)生成:

  • 交互式儀表盤:測(cè)試結(jié)果、需求覆蓋率、能力地圖
  • 步驟級(jí)敘述:每個(gè)操作附帶時(shí)間戳、截圖、HTML 源碼
  • 需求追溯:通過 @capability、@feature、@story 標(biāo)簽關(guān)聯(lián)業(yè)務(wù)需求
  • 不穩(wěn)定測(cè)試檢測(cè):歷史趨勢(shì)分析,識(shí)別波動(dòng)用例
  • 視頻錄制:配合 Docker/Selenium Grid 可錄制完整測(cè)試會(huì)話

?? 報(bào)告示例:target/site/serenity/index.html —— 完全交互式,支持逐層鉆取

??2026 生態(tài)系統(tǒng)集成

工具集成方式
GitHub Actionsserenity-bdd/report-publisher-action@v2
Jira/Xray通過 serenity-jira-requirements-provider 自動(dòng)上傳結(jié)果
Allure支持混合報(bào)告(Serenity + Allure 雙報(bào)告)
Docker官方 serenitybdd/serenity-cli 鏡像用于 CI 環(huán)境
Playwright社區(qū)插件提供實(shí)驗(yàn)性支持(GitHub 查看最新進(jìn)展)

??常見陷阱與避坑指南

  1. 避免混用 JUnit 4/5:JUnit 5 項(xiàng)目使用 @ExtendWith(SerenityRunner.class)
  2. 始終使用 WebElementFacade:替代原生 WebElement,獲得內(nèi)置智能等待
  3. 禁止硬編碼等待:使用 WaitUntil 條件等待替代 Thread.sleep()
  4. CI 環(huán)境優(yōu)化截圖:配置 serenity.take.screenshots=FOR_FAILURES 減少產(chǎn)物體積
  5. 升級(jí)注意:Serenity 3.x → 4.x 需要 Selenium 4.15+ 和 Java 17+

??必備資源(2026 更新)

?? 專家建議:2026 年新項(xiàng)目建議直接采用 Screenplay 模式 而非傳統(tǒng)頁面對(duì)象——它更適合復(fù)雜業(yè)務(wù)流程,能實(shí)現(xiàn)真正的業(yè)務(wù)語言測(cè)試。推薦從 Serenity Starter 項(xiàng)目 快速啟動(dòng)。

?總結(jié)

Serenity BDD 依然是企業(yè)級(jí) Selenium 自動(dòng)化的黃金標(biāo)準(zhǔn),特別適合對(duì)可維護(hù)性、報(bào)告質(zhì)量和 BDD 協(xié)作有高要求的團(tuán)隊(duì)。2025 年底發(fā)布的 4.0+ 版本持續(xù)活躍開發(fā),全面兼容 Selenium 4 新特性及主流云測(cè)試平臺(tái),是 2026 年自動(dòng)化測(cè)試架構(gòu)的可靠選擇。??

到此這篇關(guān)于Serenity BDD 框架:Java + Selenium 全面指南(2026 最新)的文章就介紹到這了,更多相關(guān)Java Selenium框架內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MyBatis 字段映射的解決方案

    MyBatis 字段映射的解決方案

    本文介紹了三種MyBatis數(shù)據(jù)庫字段與Java實(shí)體屬性映射解決方案:手動(dòng)@Results映射、可復(fù)用的@Results(id)映射及全局駝峰命名自動(dòng)轉(zhuǎn)換配置,通過這些方法,可以有效減少冗余代碼,簡(jiǎn)化Mapper接口設(shè)計(jì),感興趣的朋友跟隨小編一起看看吧
    2026-05-05
  • jdbc連接數(shù)據(jù)庫實(shí)例詳解

    jdbc連接數(shù)據(jù)庫實(shí)例詳解

    在本篇內(nèi)容里小編給大家分享了關(guān)于jdbc如何連接數(shù)據(jù)庫的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們學(xué)習(xí)下。
    2019-02-02
  • 簡(jiǎn)述Springboot @Async 異步方法

    簡(jiǎn)述Springboot @Async 異步方法

    這篇文章主要介紹了Springboot @Async 異步方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-05-05
  • springboot整合shiro的過程詳解

    springboot整合shiro的過程詳解

    Shiro 是一個(gè)強(qiáng)大的簡(jiǎn)單易用的 Java 安全框架,主要用來更便捷的 認(rèn)證,授權(quán),加密,會(huì)話管理,這篇文章給大家詳細(xì)介紹Shiro 工作原理及架構(gòu)圖,通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-10-10
  • springboot項(xiàng)目實(shí)現(xiàn)定時(shí)備份數(shù)據(jù)庫導(dǎo)出sql文件方式

    springboot項(xiàng)目實(shí)現(xiàn)定時(shí)備份數(shù)據(jù)庫導(dǎo)出sql文件方式

    這篇文章主要介紹了springboot項(xiàng)目實(shí)現(xiàn)定時(shí)備份數(shù)據(jù)庫導(dǎo)出sql文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • Java中如何正確定義字符串

    Java中如何正確定義字符串

    這篇文章主要給大家介紹了關(guān)于Java中如何正確定義字符串的相關(guān)資料,在Java中定義一個(gè)字符串最簡(jiǎn)單的方法是用雙引號(hào)把它包圍起來,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • IDEA中使用Typora編輯md文件的方法

    IDEA中使用Typora編輯md文件的方法

    這篇文章主要介紹了IDEA中使用Typora編輯md文件的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • java中多態(tài)概念、實(shí)現(xiàn)原理詳解

    java中多態(tài)概念、實(shí)現(xiàn)原理詳解

    JAVA中多態(tài)性是對(duì)象多種表現(xiàn)形式的體現(xiàn)。在面向?qū)ο笾?最常見的多態(tài)發(fā)生在使用父類的引用來引用子類的對(duì)象。下面這篇文章主要給大家介紹一下,需要的朋友可以參考下
    2017-04-04
  • Java實(shí)現(xiàn)貪吃蛇游戲(1小時(shí)學(xué)會(huì))

    Java實(shí)現(xiàn)貪吃蛇游戲(1小時(shí)學(xué)會(huì))

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)貪吃蛇游戲,1小時(shí)學(xué)會(huì)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • Spring-MVC異步請(qǐng)求之Servlet異步處理

    Spring-MVC異步請(qǐng)求之Servlet異步處理

    這篇文章主要介紹了Spring-MVC異步請(qǐng)求之Servlet異步處理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01

最新評(píng)論

土默特右旗| 长武县| 彰武县| 门源| 乌兰察布市| 夏津县| 万山特区| 邻水| 佛坪县| 文昌市| 岫岩| 遂昌县| 万盛区| 获嘉县| 黄陵县| 九龙坡区| 巧家县| 温宿县| 藁城市| 宿松县| 安岳县| 孝感市| 绥宁县| 大渡口区| 富川| 弋阳县| 宜兴市| 杭锦旗| 平定县| 红河县| 平邑县| 乌鲁木齐市| 江门市| 旅游| 密山市| 达日县| 罗城| 射洪县| 尤溪县| 蛟河市| 平凉市|