mcpField
T
testng-skill

testng-skill

github.com/lambdatest测试与质量384235 次安装2 周前更新
代码仓库

关于 testng-skill

testng-skill 为使用 TestNG 的 Java 开发者提供测试参考,汇集套件、数据提供器、并行执行、监听器、报告和 CI/CD 的示例与进阶指南。

主要功能

  1. 01测试、分组与数据提供器
  2. 02套件 XML 与并行执行
  3. 03软断言与监听器
  4. 04进阶配置和集成模式
  5. 05调试与最佳实践清单

适用场景

  1. 01将 Java 测试组织为可运行的分组
  2. 02使用数据集并行运行测试
  3. 03配置监听器、报告和 CI

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/lambdatest/agent-skills --skill testng-skill

安装后在 Claude Code 中输入/testng-skill确认已加载。

附带文件reference/advanced-patterns.mdreference/playbook.md

详细介绍

TestNG 测试技能

核心模式

带分组的基本测试
import org.testng.annotations.*;
import org.testng.Assert;

public class LoginTest {
    @BeforeMethod
    public void setUp() { /* setup */ }

    @Test(groups = "smoke")
    public void testLoginSuccess() {
        Assert.assertTrue(loginService.login("[email protected]", "password123"));
    }

    @Test(groups = "regression", dependsOnMethods = "testLoginSuccess")
    public void testAccessDashboard() {
        Assert.assertNotNull(dashboard.getContent());
    }

    @Test(expectedExceptions = AuthenticationException.class)
    public void testLoginInvalidPassword() {
        loginService.login("[email protected]", "wrong");
    }

    @AfterMethod
    public void tearDown() { /* cleanup */ }
}
数据提供器
@DataProvider(name = "loginData")
public Object[][] loginData() {
    return new Object[][] {
        {"[email protected]", "admin123", true},
        {"[email protected]", "password", true},
        {"[email protected]", "wrong", false},
    };
}

@Test(dataProvider = "loginData")
public void testLogin(String email, String password, boolean expected) {
    Assert.assertEquals(loginService.login(email, password), expected);
}
TestNG XML 套件
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Regression" parallel="tests" thread-count="5">
  <test name="Smoke">
    <groups><run><include name="smoke"/></run></groups>
    <classes><class name="tests.LoginTest"/></classes>
  </test>
  <test name="Full">
    <groups><run><include name="regression"/><exclude name="flaky"/></run></groups>
    <packages><package name="tests.*"/></packages>
  </test>
</suite>
并行执行
<suite parallel="methods" thread-count="5">   
<suite parallel="classes" thread-count="5">    
<suite parallel="tests" thread-count="5">      
软断言
SoftAssert soft = new SoftAssert();
soft.assertEquals(user.getName(), "Alice");
soft.assertEquals(user.getAge(), 25);
soft.assertTrue(user.isActive());
soft.assertAll();  // Reports all failures at once
监听器
public class TestListener implements ITestListener {
    @Override public void onTestFailure(ITestResult result) {
        System.out.println("Failed: " + result.getName());
        // Take screenshot, log, etc.
    }
}

@Listeners(TestListener.class)
public class LoginTest { /* ... */ }
生命周期注解
@BeforeSuite → @BeforeTest → @BeforeClass → @BeforeMethod → @Test → @AfterMethod → @AfterClass → @AfterTest → @AfterSuite
反模式
不佳做法良好做法原因
到处使用 dependsOnMethods独立测试失败级联
没有分组@Test(groups = "smoke")无法运行部分测试
硬编码测试数据@DataProvider可复用
按优先级排序独立测试脆弱

快速参考

任务命令
运行套件mvn test -DsuiteXmlFile=testng.xml
运行分组mvn test -Dgroups=smoke
运行类mvn test -Dtest=LoginTest
报告test-output/index.html

深入模式 → reference/playbook.md

§部分内容
1项目设置与配置Maven + Surefire 配置
2套件 XML 配置多环境、并行、分组
3BaseTest 与线程安全驱动ThreadLocal、ConfigReader
4数据提供器(高级)Excel、JSON、CSV、并行、跨类
5工厂模式跨浏览器矩阵
6监听器(生产套件)重试、截图、计时
7软断言与依赖分组、方法依赖
8Page Object 集成PageFactory、流式 PO
9并行执行策略方法/类/测试/混合
10报告集成Allure、ExtentReports
11CI/CD 集成GitHub Actions、Jenkins
12调试速查12 个常见问题
13最佳实践检查清单14 项

评论

支持 Markdown