java - 多次运行TestNG测试

标签 java gradle testng stress-testing

我想使用Gradle和TestNG / JUnit实现某种压力测试。

我发现https://stackoverflow.com/a/41650455可以与JUnit完美配合,但不能与TestNG一起使用。我创建了一个小仓库来显示我的问题:

https://github.com/dhardtke/gradle-testng-stresstest

如果我运行gradlew stressTestJUnit,我会正确收到

JUnitTests > testNothing STANDARD_ERROR
    I am a JUnit test!

JUnitTests > testNothing STANDARD_ERROR
    I am a JUnit test!

JUnitTests > testNothing STANDARD_ERROR
    I am a JUnit test!

JUnitTests > testNothing STANDARD_ERROR
    I am a JUnit test!

JUnitTests > testNothing STANDARD_ERROR
    I am a JUnit test!

但是在运行gradlew stressTestTestNG时,我只会收到:
Gradle suite > Gradle test > TestNGTests.testNothing STANDARD_ERROR
    I am a TestNG test!

我已经尝试找出在执行TestNG测试而不是JUnit测试时Gradle有什么不同之处,但是还无法弄清楚(尚未):https://github.com/gradle/gradle/tree/master/subprojects/testing-jvm/src/main/java/org/gradle/api/internal/tasks/testing/testng

最佳答案

我终于找到了解决方法:

build.gradle:

task testNG(type: StressTest) {
    useTestNG() {
        options.listeners << "core.test.TestNgStressTestListener"
        environment "times", times
        environment "stressTest", true
    }
}

和我的TestNgStressTestListener类:
@Override
public void alter(final List<XmlSuite> suites) {
    final boolean stressTest = Boolean.parseBoolean(System.getenv("stressTest"));

    if (stressTest) {
        final int times = Integer.parseInt(System.getenv("times"));

        final XmlSuite base = suites.get(0);
        suites.clear();
        final String baseName = base.getName();

        for (int i = 0; i < times; i++) {
            final XmlSuite copy = (XmlSuite) base.clone();
            copy.setName(String.format("%s (%d)", baseName, i + 1));

            suites.add(copy);
        }
    }
}

给定的侦听器仅复制第一个XmlSuite并更改其名称(否则在TestNG内部引发Exception)。

奇迹般有效!

关于java - 多次运行TestNG测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47116859/

相关文章:

java - 数字签名验证,所选证书有错误,无法使用

java - 从 .class (Class<?>) 调用 Object 的 toString() 方法

gradle - 如何为kotlin2JS插件设置gradle outout文件夹?

java - 在 spring boot 中使用 testNG 进行单元测试需要时间来构建项目

TestNG:@Test 在类级别执行所有方法

java - 如何从另一个 scala 文件扩展一个 scala 文件中定义的类

java - 从 MySQL 数据库解析未显示在 Activity 中

android - 如何使用 Gradle 为 Android 项目生成 Eclipse 和 Intellij 项目文件

java - Gradle Java 和 MongoDB

java - 如何使用 XML 文件使用 testNG 多次运行测试?