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

Serenity框架下使用JUnit 5实现Selenium测试的重复执行

夏婷小哥_3062

夏婷小哥_3062

发布时间:2025-12-09 11:31:14

|

903人浏览过

|

来源于php中文网

原创

serenity框架下使用junit 5实现selenium测试的重复执行

本教程详细介绍了如何在Serenity框架中使用JUnit 5的`@RepeatedTest`注解,实现Selenium测试用例的重复执行。通过集成`serenity-junit5`扩展,开发者可以轻松地将单个测试方法运行指定次数,从而有效进行稳定性验证或特定场景的多次模拟,提升测试效率和覆盖度。

在自动化测试实践中,有时我们需要对同一个测试用例进行多次重复执行。这可能出于多种目的,例如验证应用的稳定性、模拟高并发下的行为(尽管这并非负载测试的最佳实践)、或者在数据驱动测试中模拟不同数据集的多次输入。对于使用Serenity框架结合Selenium进行Web自动化测试的场景,JUnit 5提供了一个简洁而强大的机制来实现这一需求:@RepeatedTest注解。

Serenity与JUnit 5的集成基础

Serenity框架通过其serenity-junit5扩展,与JUnit 5测试框架无缝集成。这意味着我们可以直接利用JUnit 5的各项高级特性,包括参数化测试、动态测试以及本教程关注的重复测试。

Google AI Mode Search
Google AI Mode Search

使用本地Google Cookie在Google AI模式中搜索,实时获取体育比分、股票价格、新闻、天气和AI摘要。

下载

要实现测试的重复执行,核心步骤是:

  1. 确保项目中已引入serenity-junit5依赖。
  2. 在测试类上使用@ExtendWith(SerenityJUnit5Extension.class)注解,以启用Serenity的JUnit 5扩展。
  3. 在需要重复执行的测试方法上,使用@RepeatedTest(n)注解,其中n是你希望测试运行的次数。

实现Selenium测试重复执行的示例

以下是一个具体的代码示例,演示如何在一个Serenity驱动的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;

/**
 * 演示如何在Serenity框架下使用JUnit 5的@RepeatedTest注解
 * 重复执行Selenium测试。
 */
@ExtendWith(SerenityJUnit5Extension.class)
public class GoToGoogleRepeatedTest {

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

    /**
     * 该测试方法将被重复执行指定次数。
     * 在本例中,它将重复执行2次。
     */
    @RepeatedTest(2)
    void accessGoogleHomepageRepeatedly() {
        System.out.println("正在执行访问Google主页的测试...");
        driver.get("https://google.com");
        // 这里可以添加更多的断言或交互逻辑
        // 例如:Assertions.assertTrue(driver.getTitle().contains("Google"));
    }
}

代码解析

  • import net.serenitybdd.junit5.SerenityJUnit5Extension;: 导入Serenity JUnit 5扩展类。
  • import net.thucydides.core.annotations.Managed;: 导入Serenity的@Managed注解,用于声明并自动管理WebDriver实例。
  • import org.junit.jupiter.api.RepeatedTest;: 导入JUnit 5的@RepeatedTest注解。
  • import org.junit.jupiter.api.extension.ExtendWith;: 导入JUnit 5的@ExtendWith注解,用于注册扩展。
  • @ExtendWith(SerenityJUnit5Extension.class): 这个注解告诉JUnit 5,在执行此类中的测试时,需要加载并使用SerenityJUnit5Extension。这是Serenity框架能够管理WebDriver、生成报告等功能的关键。
  • @Managed WebDriver driver;: Serenity框架会负责初始化和关闭这个WebDriver实例。对于每次重复执行的测试,Serenity通常会提供一个全新的WebDriver实例,确保测试之间的隔离性。
  • @RepeatedTest(2): 这是实现重复执行的核心。它指示JUnit 5将accessGoogleHomepageRepeatedly()方法执行两次。你可以将2替换为任何你需要的重复次数。

注意事项与最佳实践

  1. 测试隔离性:Serenity框架通常会确保每次重复执行的测试都运行在一个相对独立的上下文中,包括独立的WebDriver实例。这有助于避免测试之间的状态污染。
  2. 报告生成:Serenity会为每一次重复执行的测试生成独立的报告条目,清晰地展示每次运行的结果,包括通过、失败或跳过。
  3. 何时使用@RepeatedTest:
    • 稳定性验证:检查在多次运行后,测试是否仍然能够稳定通过,发现间歇性失败(flaky tests)。
    • 特定场景的多次模拟:例如,测试一个需要多次尝试才能成功的操作,或者验证一个随机生成数据的场景。
    • 避免用于负载测试:@RepeatedTest并非为高并发或大规模负载测试设计。对于这类需求,应使用专门的性能测试工具(如JMeter、Gatling等)。
  4. RepetitionInfo参数:@RepeatedTest还可以与RepetitionInfo参数结合使用,以获取当前重复的次数和总重复次数,这在需要根据当前是第几次重复来调整测试行为时非常有用。例如:
    import org.junit.jupiter.api.RepetitionInfo;
    // ...
    @RepeatedTest(5)
    void testWithRepetitionInfo(RepetitionInfo repetitionInfo) {
        System.out.println("当前是第 " + repetitionInfo.getCurrentRepetition() + 
                           " 次重复,总共 " + repetitionInfo.getTotalRepetitions() + " 次。");
        driver.get("https://another-site.com/" + repetitionInfo.getCurrentRepetition());
    }

总结

通过Serenity框架与JUnit 5的强大结合,开发者可以轻松地实现Selenium测试用例的重复执行。@RepeatedTest注解提供了一种简洁高效的方式来增强测试的鲁棒性和覆盖范围,尤其适用于稳定性验证和特定场景的多次模拟。正确地运用这一特性,能够显著提升自动化测试的价值和效率。

热门AI工具

更多
咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

WorkBuddy

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

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

豆包大模型

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

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

DeepSeek

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

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

相关专题

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

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

5050

2023.10.13

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

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

3441

2023.10.23

Java 单元测试
Java 单元测试

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

1206

2025.10.24

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

4376

2024.01.03

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

326

2025.12.06

PHP 命令行脚本与自动化任务开发
PHP 命令行脚本与自动化任务开发

本专题系统讲解 PHP 在命令行环境(CLI)下的开发与应用,内容涵盖 PHP CLI 基础、参数解析、文件与目录操作、日志输出、异常处理,以及与 Linux 定时任务(Cron)的结合使用。通过实战示例,帮助开发者掌握使用 PHP 构建 自动化脚本、批处理工具与后台任务程序 的能力。

506

2025.12.13

Figma AI自动化智能数据填充与交互生成实战
Figma AI自动化智能数据填充与交互生成实战

告别机械重复,详细演示如何用 AI 填充业务真实数据,并自动为页面添加交互连线,将静态设计稿快速转变为动态原型。

345

2026.05.13

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

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

5050

2023.10.13

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

0

2026.11.05

热门下载

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

精品课程

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

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