
TestNG 是 Java 主流的单元测试 / 自动化测试框架注解Annotation是它的核心用来标记类、方法告诉 TestNG 如何执行测试。我按执行顺序 功能分类整理最常用、最核心的一次性讲全。一、最常用的核心注解必掌握1. 测试方法注解Test作用标记一个方法为测试方法TestNG 只会执行带这个注解的方法最基础、最核心的注解java运行Test public void testLogin() { // 测试逻辑 }2. 生命周期注解控制执行顺序这是自动化测试Selenium/Playwright最常用的一组控制前置 / 后置操作表格注解执行时机典型用途BeforeSuite整个测试套件最先执行加载配置、初始化驱动AfterSuite整个测试套件最后执行关闭驱动、生成报告BeforeTesttest标签内所有测试前统一准备数据AfterTesttest标签内所有测试后清理数据BeforeClass当前测试类所有方法前初始化页面对象AfterClass当前测试类所有方法后类级别的清理BeforeMethod每个测试方法前都执行打开页面、登录AfterMethod每个测试方法后都执行截图、返回首页✅执行顺序固定plaintextBeforeSuite → BeforeTest → BeforeClass → BeforeMethod → Test测试方法1 → AfterMethod → BeforeMethod → Test测试方法2 → AfterMethod → AfterClass → AfterTest AfterSuite3. 依赖 / 分组 / 忽略注解Ignore暂时忽略某个测试方法不执行java运行Ignore Test public void testNotReady() {}DependsOnMethods测试方法依赖另一个方法执行java运行Test public void login() {} Test(dependsOnMethods login) public void pay() {} // 必须等 login 执行成功才会运行Groups给测试方法分组可以只运行某一组测试java运行Test(groups {smoke, login}) public void testLogin() {}4. 高级注解自动化 / 接口测试常用DataProvider数据驱动测试一个测试方法跑多组数据java运行DataProvider(name loginData) public Object[][] getData() { return new Object[][] {{user1, pwd1}, {user2, pwd2}}; } Test(dataProvider loginData) public void testLogin(String user, String pwd) {}Parameters从testng.xml读取参数实现配置化java运行Parameters({url, username}) Test public void test(String url, String name) {}Factory动态创建测试类实例高级数据驱动二、Test 注解常用属性java运行Test( priority 1, // 执行优先级数字越小越先执行 enabled true, // 是否启用该测试 timeout 3000, // 超时时间毫秒 expectedExceptions ArithmeticException.class // 预期抛出的异常 )三、完整示例代码java运行import org.testng.annotations.*; public class TestNGDemo { BeforeSuite public void beforeSuite() { System.out.println(1. 套件开始); } BeforeClass public void beforeClass() { System.out.println(2. 类开始); } BeforeMethod public void beforeMethod() { System.out.println(3. 方法前); } Test(priority 2) public void testA() { System.out.println(4. 执行测试A); } Test(priority 1) public void testB() { System.out.println(4. 执行测试B); } AfterMethod public void afterMethod() { System.out.println(5. 方法后); } AfterClass public void afterClass() { System.out.println(6. 类结束); } AfterSuite public void afterSuite() { System.out.println(7. 套件结束); } }总结核心Test标记测试方法生命周期注解控制前后置顺序套件 → 测试 → 类 → 方法 → Test → 反向清理高频BeforeMethod/AfterMethod、DataProvider、Groups用途UI 自动化、接口自动化、单元测试必备