testng.xml 是 TestNG 的核心配置文件,用于定义测试套件、测试模块、执行范围、并行策略、参数传递等;其最小结构需包含 suite 根标签、至少一个 test 及 classes 指定完整限定类名。

testng.xml 是 TestNG 的核心配置文件,用来定义测试套件(suite)、测试模块(test)、执行哪些类或方法、是否并行、参数传递等。配置得当,能大幅提高测试组织效率和执行灵活性。
基础结构:从一个可运行的最小配置开始
最简 testng.xml 必须包含 suite 根标签,其下至少一个 test,再嵌套 classes 指定测试类:
- <!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd"> —— 声明 DTD,确保 XML 合法(推荐使用 HTTPS 地址)
- <suite name="MySuite"> —— name 属性必填,会显示在报告中
- <test name="SmokeTest"> —— 每个 test 相当于一个逻辑测试组,name 同样必填
- <classes><class name="com.example.LoginTest"/></classes> —— class 的 name 必须是完整限定类名(含包路径),且类中需有 @Test 方法
按类或包批量指定测试范围
可根据项目结构选择更高效的组织方式:
-
按类配置:适合精准控制,例如只跑某几个关键类
<classes>
<class name="com.test.LoginTest">
<methods>
<include name="loginSuccess"/>
</methods>
</class>
</classes> -
按包配置:适合整包回归,支持通配符
<packages>
<package name="com.test.smoke.*"/>
</packages> - 可在同一 <test> 中混用 <classes> 和 <packages>,TestNG 会合并执行
控制执行行为的关键属性
这些属性写在 <suite> 或 <test> 标签上,影响实际运行逻辑:
- parallel:设为 "methods"、"tests"、"classes" 或 "instances",开启并行;必须配合 thread-count 使用(如 thread-count="3")
- preserve-order="true"(默认):按 XML 中声明顺序执行;设为 false 则允许乱序(提升并发效率但可能掩盖依赖问题)
- verbose="2":控制控制台日志详细程度(0–10),调试时建议设为 2 或更高
- data-provider-thread-count="5":当测试方法使用 @DataProvider 时,控制数据提供者线程池大小
方法级精细控制与分组管理
在类内部进一步筛选要执行的方法,或通过分组统一调度:
-
include/exclude 方法:
<methods>
<include name="testLogin.*"/>
<exclude name="testSkipForNow"/>
</methods> -
全局分组定义(在 <suite> 下):
<groups>
<define name="smoke">
<include name="login"/>
<include name="home"/>
</define>
</groups>
然后在 <test> 中用 <groups><run><include name="smoke"/></run></groups> 引用
不复杂但容易忽略:每次修改 testng.xml 后,确保类路径正确、类名拼写无误、@Test 注解已添加,否则测试会静默跳过。










