讲师中心 微信公众号
AI工具推荐 视频效率加速

如何使用Serenity和JUnit 5重复运行Selenium测试

星墨酱_1067

星墨酱_1067

发布时间:2025-12-12 23:52:40

|

996人浏览过

|

来源于php中文网

原创

如何使用serenity和junit 5重复运行selenium测试

本文详细介绍了如何在Serenity BDD框架中,结合JUnit 5的强大功能,实现Selenium自动化测试的多次重复执行。通过利用JUnit 5的`@RepeatedTest`注解,开发者可以轻松地配置单个测试方法运行指定的次数,从而满足特定的测试需求,提高测试效率和覆盖率。

在自动化测试实践中,有时需要将同一个测试场景重复执行多次,例如为了验证系统的稳定性、在不同数据条件下进行回归测试,或者模拟高并发场景下的少量用户行为。对于使用Serenity BDD框架进行Selenium UI自动化测试的团队而言,结合JUnit 5,可以非常优雅地实现这一目标。

核心方法:利用JUnit 5的@RepeatedTest注解

Serenity框架与JUnit 5的集成提供了强大的测试能力。JUnit 5自带的@RepeatedTest注解是实现测试方法重复执行的关键。通过简单地在测试方法上添加此注解,并指定重复次数,即可让Serenity自动管理多次测试的生命周期。

前提条件

要利用@RepeatedTest功能,您的项目必须配置Serenity BDD与JUnit 5的集成。这通常意味着在项目的构建配置文件(如Maven的pom.xml或Gradle的build.gradle)中引入相应的依赖。

Maven示例依赖配置:

Google Sheets
Google Sheets

Google Sheets 安全管理工作:用于创建、读取、写入、追加电子表格数据;管理工作表(读取/添加/删除);复制电子表格。

下载
<dependencies>
    <!-- Serenity JUnit 5 扩展 -->
    <dependency>
        <groupId>net.serenity-bdd</groupId>
        <artifactId>serenity-junit5</artifactId>
        <version>${serenity.version}</version>
        <scope>test</scope>
    </dependency>
    <!-- JUnit Jupiter API -->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>${junit.jupiter.version}</version>
        <scope>test</scope>
    </dependency>
    <!-- JUnit Jupiter Engine (用于运行测试) -->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit.jupiter.version}</version>
        <scope>test</scope>
    </dependency>
    <!-- 其他Serenity和Selenium相关依赖 -->
    <!-- ... -->
</dependencies>

请将${serenity.version}和${junit.jupiter.version}替换为项目中实际使用的Serenity和JUnit 5版本。

示例代码

以下代码演示了如何在Serenity BDD测试类中,使用@RepeatedTest注解让一个简单的Selenium测试重复执行指定次数:

import net.serenitybdd.junit5.SerenityJUnit5Extension;
import net.thucydides.core.annotations.Managed;
import org.junit.jupiter.api.RepeatedTest;
import org.junit.jupiter.api.extension.ExtendWith;
import org.openqa.selenium.WebDriver;

@ExtendWith(SerenityJUnit5Extension.class)
public class GoToGoogle {

    @Managed
    WebDriver driver;

    @RepeatedTest(2) // 此处设置测试重复执行的次数,例如2次
    void navigateToGoogleRepeatedly() { 
        driver.get("https://google.com");
        // 这里可以添加更多的Selenium操作,例如断言、元素交互等
    }
}

代码解析

  1. import net.serenitybdd.junit5.SerenityJUnit5Extension;: 导入Serenity JUnit 5扩展,这是Serenity与JUnit 5集成所需的关键组件。
  2. import net.thucydides.core.annotations.Managed;: 导入Serenity的@Managed注解,用于自动管理WebDriver实例的生命周期,包括初始化和清理。
  3. import org.junit.jupiter.api.RepeatedTest;: 导入JUnit 5的@RepeatedTest注解,这是实现测试方法重复执行的核心功能。
  4. import org.junit.jupiter.api.extension.ExtendWith;: 导入JUnit 5的@ExtendWith注解,用于将自定义扩展(如SerenityJUnit5Extension)应用到测试类。
  5. @ExtendWith(SerenityJUnit5Extension.class): 标记测试类,使其能够利用Serenity的各项功能,如WebDriver管理、步骤报告、测试数据管理等。
  6. @Managed WebDriver driver;: Serenity会自动初始化并管理一个WebDriver实例。在每次重复执行测试方法时,Serenity都会确保WebDriver处于准备就绪的状态。
  7. @RepeatedTest(2): 这个注解是关键。它指示JUnit 5和Serenity,下面的navigateToGoogleRepeatedly方法需要执行2次。您可以根据实际需求修改括号中的数字来控制重复次数。
  8. void navigateToGoogleRepeatedly(): 这是实际的测试方法。在每次重复执行时,此方法内的所有Selenium操作(例如driver.get("https://google.com"))都会被独立地执行一遍。

注意事项

在利用@RepeatedTest重复执行Serenity Selenium测试时,有几个关键点需要考虑:

  • 测试报告: Serenity BDD会为每一次重复执行生成独立的测试报告条目和详细步骤。这意味着您可以在Serenity报告中清晰地追踪每次重复运行的结果,包括通过、失败或跳过。
  • 测试数据管理: 如果您的测试需要使用不同的数据进行重复,仅仅使用@RepeatedTest可能不足够。您可能需要结合JUnit 5的@ParameterizedTest注解和相应的参数源(如@ValueSource, @CsvSource, @MethodSource等)来动态提供不同的测试数据。对于简单的重复执行,每次执行通常是独立的,不带参数变化。
  • 性能与资源消耗: 重复执行UI测试,尤其是涉及浏览器启动和页面加载的测试,可能会消耗较多的时间和系统资源。请确保您的测试环境能够承受多次WebDriver实例的创建、销毁和并发运行。
  • 测试独立性: 确保每次重复执行的测试都是相互独立的,避免前一次执行的状态、数据或浏览器会话影响后续执行。Serenity的WebDriver管理机制(通过@Managed注解)通常有助于保证这一点,它会在每次测试方法运行前后刷新WebDriver状态或重新启动浏览器。
  • 错误发现: 重复执行有助于发现偶然性或瞬时性错误,这些错误可能在单次运行中不易察觉,但在多次运行中出现的概率会增加,从而提高测试的健壮性。

总结

通过Serenity BDD框架与JUnit 5的@RepeatedTest注解的结合,开发者可以非常便捷地实现Selenium自动化测试的多次重复执行。这种方法不仅代码简洁,易于理解和维护,而且能有效提高测试的覆盖面和对系统稳定性的验证能力。合理利用这一特性,将有助于构建更加健壮和高效的自动化测试套件。

热门AI工具

更多
Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

相关专题

更多
Java Maven专题
Java Maven专题

本专题聚焦 Java 主流构建工具 Maven 的学习与应用,系统讲解项目结构、依赖管理、插件使用、生命周期与多模块项目配置。通过企业管理系统、Web 应用与微服务项目实战,帮助学员全面掌握 Maven 在 Java 项目构建与团队协作中的核心技能。

3820

2025.09.15

Java Maven/Gradle 构建与依赖管理合集
Java Maven/Gradle 构建与依赖管理合集

系统讲解 Java 项目构建工具的使用与进阶配置,涵盖 Maven 的 POM 文件结构、生命周期(clean/compile/package/install/deploy)与插件机制、依赖范围(compile/provided/test/runtime)与传递依赖管理、多模块聚合与继承、私有 Nexus 仓库发布,以及 Gradle 的 Groovy / Kotlin DSL 语法、Task 自定义与增量构建、依赖版本目录(Versi

369

2026.05.09

软件测试常用工具
软件测试常用工具

软件测试常用工具有Selenium、JUnit、Appium、JMeter、LoadRunner、Postman、TestNG、LoadUI、SoapUI、Cucumber和Robot Framework等等。测试人员可以根据具体的测试需求和技术栈选择适合的工具,提高测试效率和准确性 。

4670

2023.10.13

java测试工具有哪些
java测试工具有哪些

java测试工具有JUnit、TestNG、Mockito、Selenium、Apache JMeter和Cucumber。php还给大家带来了java有关的教程,欢迎大家前来学习阅读,希望对大家能有所帮助。

3061

2023.10.23

Java 单元测试
Java 单元测试

本专题聚焦 Java 在软件测试与持续集成流程中的实战应用,系统讲解 JUnit 单元测试框架、Mock 数据、集成测试、代码覆盖率分析、Maven 测试配置、CI/CD 流水线搭建(Jenkins、GitHub Actions)等关键内容。通过实战案例(如企业级项目自动化测试、持续交付流程搭建),帮助学习者掌握 Java 项目质量保障与自动化交付的完整体系。

1086

2025.10.24

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

4564

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

5937

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

2462

2024.11.28

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

100

2026.10.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn