TestNG.xml是TestNG测试框架的配置文件,用于定义测试套件的结构、配置测试执行的各类参数,是组织和运行TestNG测试的核心入口文件。通过它可以灵活组合测试用例、设置执行规则,不需要修改测试代码就能调整测试策略。

TestNG.xml的核心作用
TestNG.xml主要承担以下几个核心功能:
- 组织测试用例:可以将不同类、不同包下的测试方法组合成统一的测试套件,按需划分测试模块。
- 配置执行参数:可以设置测试依赖、执行顺序、超时时间、重试机制等执行规则。
- 管理测试环境:可以定义全局参数,供所有测试用例共享使用,避免参数硬编码。
- 控制执行范围:可以指定要执行或跳过的测试方法、测试类、测试组,灵活调整测试范围。
TestNG.xml的基础结构
一个标准的TestNG.xml文件由<suite>、<test>、<classes>等核心标签组成,层级关系为suite包含test,test包含classes,classes包含具体的测试类。下面是基础结构示例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="默认测试套件">
<test name="模块A测试">
<classes>
<class name="com.test.demo.TestClass1"/>
<class name="com.test.demo.TestClass2"/>
</classes>
</test>
</suite>
用TestNG.xml组织测试套件
1. 按测试类组织
如果需要执行指定的测试类,直接在<classes>标签下添加<class>节点,填写测试类的全限定名即可。如果要跳过某个类,可以添加<exclude>子标签:
<suite name="按类组织测试套件">
<test name="用户模块测试">
<classes>
<class name="com.test.user.UserLoginTest">
<methods>
<exclude name="testOldLogin"/>
</methods>
</class>
<class name="com.test.user.UserRegisterTest"/>
</classes>
</test>
</suite>
2. 按测试组组织
TestNG支持给测试方法打组标签,通过TestNG.xml可以指定执行某个组的用例。首先在测试方法中添加组定义:
import org.testng.annotations.Test;
public class GroupTest {
@Test(groups = "smoke")
public void testSmoke1() {
System.out.println("冒烟测试用例1");
}
@Test(groups = "regression")
public void testRegression1() {
System.out.println("回归测试用例1");
}
}
然后在TestNG.xml中配置要执行的组:
<suite name="按组组织测试套件">
<test name="冒烟测试">
<groups>
<run>
<include name="smoke"/>
</run>
</groups>
<classes>
<class name="com.test.demo.GroupTest"/>
</classes>
</test>
</suite>
3. 配置全局参数
可以在<suite>标签下定义全局参数,所有测试用例都可以通过@Parameters注解获取该参数:
<suite name="带参数的测试套件">
<parameter name="env" value="test"/>
<parameter name="browser" value="chrome"/>
<test name="参数化测试">
<classes>
<class name="com.test.demo.ParamTest"/>
</classes>
</test>
</suite>
对应的测试类代码:
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class ParamTest {
@Parameters({"env", "browser"})
@Test
public void testParam(String env, String browser) {
System.out.println("当前环境:" + env + ",使用的浏览器:" + browser);
}
}
运行TestNG.xml的方式
1. IDE中运行
在IntelliJ IDEA或Eclipse中,右键点击TestNG.xml文件,选择Run as TestNG Suite即可直接执行配置好的测试套件。
2. 命令行运行
如果项目使用Maven管理,可以在pom.xml中配置TestNG插件,然后通过mvn test命令执行:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M7</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</build>
配置完成后,在项目根目录执行mvn test命令,就会自动读取testng.xml执行测试。
常用配置项说明
下面是TestNG.xml中常用的配置项及其作用:
| 标签/属性 | 作用说明 |
|---|---|
| <suite>的parallel属性 | 设置并行执行策略,可选methods、tests、classes,默认不并行 |
| <suite>的thread-count属性 | 设置并行执行时的线程数量 |
| <test>的preserve-order属性 | 设置是否按照配置顺序执行测试方法,默认true |
| <method-selector> | 自定义测试方法的选择逻辑,筛选要执行的用例 |
| <listener> | 配置测试监听器,用于生成报告、处理测试结果等 |
注意事项
- TestNG.xml文件的编码建议设置为UTF-8,避免出现中文乱码问题。
- 测试类的全限定名不要写错,否则会提示找不到测试类。
- 如果同时配置了组和类,会优先按照组的规则筛选用例。
- 并行执行时要注意测试用例之间是否有依赖,避免并发冲突。
TestNGTestNG_xml测试套件自动化测试修改时间:2026-07-04 11:09:39