0

0

在Serenity框架下使用JUnit 5重复执行Selenium测试的教程

霞舞

霞舞

发布时间:2025-12-08 09:31:30

|

459人浏览过

|

来源于php中文网

原创

在Serenity框架下使用JUnit 5重复执行Selenium测试的教程

本文将详细介绍如何在serenity bdd框架中,利用junit 5的`@repeatedtest`注解,实现对单个selenium自动化测试用例的多次重复执行。通过集成`serenity-junit5`扩展,开发者可以轻松地配置测试运行次数,从而满足性能验证或稳定性测试等需求,无需借助额外的测试工具

在自动化测试实践中,有时我们需要对同一个测试用例进行多次重复执行,以验证其稳定性、检查特定操作的性能或模拟并发场景。对于使用Serenity BDD框架结合Selenium进行UI自动化测试的项目而言,如果希望在不引入JMeter等外部工具的情况下实现这一目标,JUnit 5提供了一个优雅的解决方案。

利用JUnit 5的@RepeatedTest实现测试重复执行

JUnit 5引入了@RepeatedTest注解,允许开发者简单地在测试方法上指定测试的重复次数。Serenity框架通过其serenity-junit5模块,能够无缝地与JUnit 5的这些高级特性集成,从而使得在Serenity测试中重复执行Selenium操作变得非常直接。

前提条件与集成

要使用此功能,请确保您的Serenity项目已配置为使用JUnit 5。通常,这意味着您的pom.xml(Maven)或build.gradle(Gradle)中包含了serenity-junit5依赖。



    net.serenity-bdd
    serenity-junit5
    ${serenity.version} 
    test


    org.junit.jupiter
    junit-jupiter-api
    ${junit.jupiter.version} 
    test


    org.junit.jupiter
    junit-jupiter-engine
    ${junit.jupiter.version}
    test

示例代码

以下是一个具体的代码示例,展示了如何在Serenity BDD和JUnit 5环境下,重复执行一个简单的Selenium测试,例如打开Google主页两次:

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 RepeatedSeleniumTest {

    @Managed
    WebDriver driver; // Serenity会自动管理WebDriver实例

    @RepeatedTest(2) // 此测试方法将被重复执行2次
    void navigateToGoogle() {
        driver.get("https://google.com");
        // 这里可以添加更多的Selenium操作和断言
        System.out.println("Navigated to Google in repetition.");
    }

    // 您可以根据需要添加其他非重复测试方法
    // @Test
    // void anotherRegularTest() {
    //     driver.get("https://bing.com");
    // }
}

代码解析

  1. @ExtendWith(SerenityJUnit5Extension.class):

    笔尖Ai写作
    笔尖Ai写作

    AI智能写作,1000+写作模板,轻松原创,拒绝写作焦虑!一款在线Ai写作生成器

    下载
    • 这是JUnit 5的扩展机制,用于将Serenity框架的功能集成到JUnit 5测试中。
    • 通过此注解,Serenity能够管理WebDriver实例、生成详细的测试报告以及处理截图等。
  2. @Managed WebDriver driver;:

    • 这是Serenity特有的注解,用于声明一个WebDriver实例。
    • Serenity会在每个测试方法(或重复测试的每次执行)开始前自动初始化一个WebDriver实例,并在测试结束后正确关闭它,从而简化了WebDriver的生命周期管理。
  3. @RepeatedTest(2):

    • 这是JUnit 5的核心注解,用于指定一个测试方法应该被重复执行的次数。
    • 在上面的例子中,navigateToGoogle()方法将被执行两次。每次执行都被视为一个独立的测试运行,并在Serenity报告中单独记录。
  4. void navigateToGoogle():

    • 这是实际的测试方法,包含了您想要重复执行的Selenium操作。
    • 在每次重复执行时,driver.get("https://google.com")都会被调用,并且Serenity会为每次执行生成相应的步骤和报告。

使用场景与注意事项

  • 稳定性测试: 当您需要确认一个特定的UI操作在多次执行后仍然能够成功完成时,@RepeatedTest非常有用。
  • 基本性能验证: 对于快速验证某个页面加载或操作响应时间是否稳定时,可以进行简单的重复测试。但请注意,这并非专业的性能测试解决方案,对于高并发或复杂负载场景,仍推荐使用JMeter等专业工具。
  • 快速验证回归: 在代码变更后,快速重复执行关键路径测试,以确保没有引入新的回归问题。
  • 数据隔离: 每次重复执行都会有Serenity管理的全新WebDriver实例(除非您配置了共享WebDriver),这有助于确保测试之间的数据隔离。
  • 报告: Serenity报告会清晰地显示每次重复测试的结果,包括通过、失败、耗时和截图等信息。
  • 参数化测试的替代: 如果您需要用不同的输入数据来运行同一个测试,那么JUnit 5的@ParameterizedTest会是更合适的选择,而不是简单地重复执行。@RepeatedTest主要用于重复执行相同的逻辑。

总结

通过Serenity BDD框架与JUnit 5的无缝集成,开发者可以非常便捷地利用@RepeatedTest注解来实现单个Selenium测试用例的多次重复执行。这种方法简单、高效,尤其适用于验证测试稳定性、进行初步性能检查或快速回归测试等场景,极大地提升了测试的灵活性和实用性。在实际项目中,合理运用这一特性,可以有效提高自动化测试的覆盖面和可靠性。

相关专题

更多
Java Maven专题
Java Maven专题

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

0

2025.09.15

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

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

438

2023.10.13

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

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

299

2023.10.23

Java 单元测试
Java 单元测试

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

19

2025.10.24

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

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

1894

2024.04.01

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

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

2088

2024.08.01

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

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

1031

2024.11.28

javascriptvoid(o)怎么解决
javascriptvoid(o)怎么解决

javascriptvoid(o)的解决办法:1、检查语法错误;2、确保正确的执行环境;3、检查其他代码的冲突;4、使用事件委托;5、使用其他绑定方式;6、检查外部资源等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

175

2023.11.23

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

6

2026.01.22

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Go 教程
Go 教程

共32课时 | 4万人学习

Go语言实战之 GraphQL
Go语言实战之 GraphQL

共10课时 | 0.8万人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号