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

无需XML文件:用TestNG代码运行多测试、并行测试及绑定监听器

TestNG 多测试用例运行、并行配置及监听器绑定实现

1. 运行多个测试用例

直接在setTestClasses方法中传入多个测试类的Class对象数组即可,示例如下:

TestNG test = new TestNG();
// 传入所有需要执行的测试类
test.setTestClasses(new Class[] { TestLogin.class, TestPayment.class, TestProfile.class });
test.run();

如果习惯用测试套件XML管理用例,也可以通过setTestSuites加载XML文件:

TestNG test = new TestNG();
List<String> suitePaths = new ArrayList<>();
suitePaths.add("src/test/resources/test-suite.xml");
test.setTestSuites(suitePaths);
test.run();

2. 配置并行测试

通过setParallel指定并行模式,setThreadCount设置线程池大小,TestNG支持以下几种核心并行模式:

  • ParallelMode.CLASSES:按测试类并行执行
  • ParallelMode.METHODS:按测试方法并行执行
  • ParallelMode.TESTS:按测试套件中的<test>节点并行
  • ParallelMode.INSTANCES:按测试类实例并行

示例(按方法并行,线程数设为3):

TestNG test = new TestNG();
test.setTestClasses(new Class[] { TestLogin.class, TestPayment.class });
// 设置并行模式为方法级别
test.setParallel(ParallelMode.METHODS);
// 设置并发线程数
test.setThreadCount(3);
test.run();

3. 绑定监听器类

先实现TestNG提供的监听器接口(比如ITestListener、IReporter),再通过addListener方法将监听器实例绑定到TestNG对象。

自定义监听器示例

import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;

public class CustomTestListener implements ITestListener {
    @Override
    public void onTestStart(ITestResult result) {
        System.out.println("测试方法启动:" + result.getMethod().getMethodName());
    }

    @Override
    public void onTestSuccess(ITestResult result) {
        System.out.println("测试方法执行成功:" + result.getMethod().getMethodName());
    }

    @Override
    public void onTestFailure(ITestResult result) {
        System.out.println("测试方法执行失败:" + result.getMethod().getMethodName());
    }

    // 其他接口方法按需实现,无需的可留空
    @Override
    public void onTestSkipped(ITestResult result) {}
    @Override
    public void onTestFailedButWithinSuccessPercentage(ITestResult result) {}
    @Override
    public void onStart(ITestContext context) {}
    @Override
    public void onFinish(ITestContext context) {}
}

绑定监听器到TestNG

TestNG test = new TestNG();
test.setTestClasses(new Class[] { TestLogin.class, TestPayment.class });
// 添加自定义监听器实例
test.addListener(new CustomTestListener());
// 支持添加多个监听器
// test.addListener(new TestReportListener());
test.run();

也可以通过类名方式添加监听器:

test.addListener(CustomTestListener.class);

完整整合示例

import org.testng.ParallelMode;
import org.testng.TestNG;
import java.util.ArrayList;
import java.util.List;

public class TestNGExecutor {
    public static void main(String[] args) {
        TestNG test = new TestNG();
        // 配置测试类
        test.setTestClasses(new Class[] { TestLogin.class, TestPayment.class });
        // 配置并行规则
        test.setParallel(ParallelMode.CLASSES);
        test.setThreadCount(2);
        // 绑定监听器
        test.addListener(new CustomTestListener());
        // 执行测试
        test.run();
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 13:23:26