无需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
相关产品推荐
相关产品推荐

