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. 01Javaテストを実行可能なグループに整理
  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ソフトアサーションと依存関係グループ、メソッド依存関係
8ページオブジェクトの統合PageFactory、流れるような API を備えた PO
9並列実行の戦略メソッド/クラス/テスト/混合
10レポートの統合Allure、ExtentReports
11CI/CD の統合GitHub Actions、Jenkins
12デバッグのクイックリファレンスよくある問題 12 件
13ベストプラクティスのチェックリスト14 項目

コメント