You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Serenity框架中使用Selenium循环执行单个测试10次

如何用Serenity框架重复执行单个Selenium测试n次

下面提供几种实用的实现方式,满足你在Serenity框架内重复执行单测的需求:

方法1:JUnit 5 @RepeatTest注解(最简单)

Serenity原生支持JUnit 5,直接用@RepeatTest指定重复次数即可,无需额外配置:

import org.junit.jupiter.api.RepeatTest;
import net.serenitybdd.junit5.SerenityJUnit5Extension;
import org.junit.jupiter.api.extension.ExtendWith;

@ExtendWith(SerenityJUnit5Extension.class)
public class RepeatedSingleTest {

    @RepeatTest(10) // 这里替换成你需要的次数n
    public void testTargetFunctionality() {
        // 你的Selenium测试逻辑,示例:
        // openUrl("https://your-test-url.com");
        // $("#target-element").click();
        // assertThat(pageTitle()).isEqualTo("Expected Title");
    }
}

执行后,Serenity报告会单独展示每次重复执行的结果,方便排查问题。

方法2:TestNG invocationCount属性

如果项目用TestNG作为测试框架,给测试方法添加invocationCount参数即可:

import org.testng.annotations.Test;
import net.serenitybdd.testng.SerenityTestNGListener;
import org.testng.annotations.Listeners;

@Listeners(SerenityTestNGListener.class)
public class RepeatedTestWithTestNG {

    @Test(invocationCount = 10) // 指定重复次数n
    public void repeatMySeleniumTest() {
        // 你的Selenium测试代码
        // 可通过Thread.currentThread()区分不同执行实例
    }
}

如果需要并行执行,还可以搭配threadPoolSize参数,提升执行效率。

方法3:Maven命令行动态指定次数(灵活调整)

如果不想硬编码次数,可通过Maven参数动态传递n值:

  1. 测试类中读取系统变量:
import org.junit.jupiter.api.Test;
import net.serenitybdd.junit5.SerenityJUnit5Extension;
import org.junit.jupiter.api.extension.ExtendWith;

@ExtendWith(SerenityJUnit5Extension.class)
public class RepeatViaCommandLine {

    @Test
    public void dynamicRepeatedTest() {
        // 默认执行1次,可通过Maven参数覆盖
        int repeatCount = Integer.parseInt(System.getProperty("repeat.count", "1"));
        
        for (int i = 0; i < repeatCount; i++) {
            // 执行测试逻辑
            // 若测试失败,断言会自动终止循环并标记失败
            assertThat(someElement.getText()).isEqualTo("Expected Text");
        }
    }
}
  1. 在pom.xml中配置Maven Surefire插件,传递系统参数:
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>3.1.2</version>
            <configuration>
                <systemPropertyVariables>
                    <repeat.count>${repeat.count}</repeat.count>
                </systemPropertyVariables>
            </configuration>
        </plugin>
    </plugins>
</build>
  1. 运行时指定次数:
mvn verify -Drepeat.count=15

以上三种方法都能在Serenity框架内实现单测重复执行,根据项目使用的测试框架和灵活性需求选择即可。

内容的提问来源于stack exchange,提问作者Asad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 01:15:55