TestNG vs JUnit – それらの違い
の主な違い TestNG JUnit
- TestNG Javaベースのフレームワークですが、 JUnit は、JAVA 用のオープンソースの単体テスト フレームワークです。
- 比較 TestNG Vs JUnit, TestNG 注釈は、 JUnit.
- TestNG 並列テストを作成できますが、 JUnit 並列テストの実行はサポートされていません。
- In TestNG, テスト ケースはグループ化できます。 JUnit, テストをグループ化することはできません。

何ですか TestNG?
TestNG NG は「Next Generation」を意味する自動テスト フレームワークです。 TestNG に触発され JUnit 注釈 (@) を使用します。 TestNG ~の欠点を克服します JUnit を作るように設計されています エンドツーエンドのテスト 簡単です。
使い方 TestNGを使用すると、適切なレポートを生成でき、合格したテスト ケースの数、失敗したテスト ケースの数、およびスキップされたテスト ケースの数を簡単に知ることができます。失敗したテスト ケースを個別に実行できます。
Junitとは何ですか?
JUnit オープンソースのユニットです テスト JAVA用のフレームワーク。 役に立つ Java 開発者が繰り返しテストを書いて実行できるようにします。Erich GammaとKent Beckが最初に開発しました。これはxUnitアーキテクチャのインスタンスです。名前が示すように、これは 単体テスト コードの小さな塊。
テスト駆動型方法論に従う開発者は、コードの前にまずユニットテストを記述して実行する必要があります。
コードの作成が完了したら、すべてのテストを実行すると、テストは成功するはずです。 コードを追加するたびに、すべてのテスト ケースを再実行して、何も壊れていないことを確認する必要があります。
違い JUnit TestNG
両方 TestNG JUnit4 は、XNUMX つまたは XNUMX つの機能を除いて同様に見えます。どちらのテクノロジーが単体テストに適しているかをすぐに判断するために、XNUMX つを比較してみましょう。以下の表は、両方でサポートされている機能を示しています。
注釈
両方 JUnit TestNG 注釈を使用しており、ほとんどすべての注釈は似ています。
TestNG の @Before 、@After と同様の @BeforeMethod 、@AfterMethod を使用します。 JUnit4.
両方 TestNG Junit4 はタイムアウトに @Test(timeout = 1000) を使用します。詳細については以下の表を確認してください。
SNA | 詳細説明 | TestNG | JUnit 4 |
---|---|---|---|
1 | テストのアノテーション | @テスト | @テスト |
2 | 現在のクラスで最初のテスト メソッドが呼び出される前に実行されます。 | @BeforeClass | @BeforeClass |
3 | 現在のクラス内のすべてのテスト メソッドの後に実行します | @放課後 | @放課後 |
4 | 各テストメソッドの前に実行されます | @BeforeMethod | @前に |
5 | 各テストメソッドの後に実行 | @アフターメソッド | @後 |
6 | テストを無視するためのアノテーション | @Test(有効=false) | @無視する |
7 | 例外の注釈 | @Test(expectedExceptions = ArithmeticException.class) | @Test(期待 = ArithmeticException.class) |
8 | タイムアウト | @Test(タイムアウト = 1000) | @Test(タイムアウト = 1000) |
9 | スイート内のすべてのテストの前に実行されます | @BeforeSuite | N / A |
10 | スイート内のすべてのテストの後に実行します | @アフタースイート | N / A |
11 | テストの実行前に実行されます | @BeforeTest | N / A |
12 | テストの実行後に実行されます | @アフターテスト | N / A |
13 | これらのグループのいずれかに属する最初のテスト メソッドが呼び出される前に実行されます。 | @BeforeGroups | N / A |
14 | ここのグループのいずれかに属する最後のテスト メソッドの後に実行します | @アフターグループ | N / A |
スイートテスト
スイートは、複数のテストをまとめて実行するために使用されます。スイートは両方を使用して作成できます TestNG JUnit4. ただし、スイートはより強力です TestNG テストの実行に非常に異なる方法を使用するためです。以下に示すコード スニペットを使用してそれを理解してみましょう。
使い方 JUnit4
以下のクラスでは、作業中のスイートの使用について説明します。 JUnit4:
package guru99.junit; import org.junit.runner.RunWith; import org.junit.runners.Suite; @RunWith(Suite.class) @Suite.SuiteClasses({ SuiteTest1.class, SuiteTest2.class, }) public class JunitTest { // This class remains empty,it is used only as a holder for the above annotations }
使い方 TestNG
TestNG XML を使用して、すべてのテストを 1 か所にバンドルします。以下の XML では、スイートの使用について説明します。 TestNG:
<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" > <suite name="My test suite"> <test name="testing"> <classes> <class name="com.guru99.SuiteTest1" /> <class name="com.guru99.SuiteTest2" /> </classes> </test> </suite>
テストを無視する
両方を使用すると、テストをスキップできます。以下のコード例を使用して見てみましょう。
使い方 JUnit4
以下のコード スニペットは、作業中の @ignore アノテーションの使用について説明しています。 JUnit4:
@Ignore public void method1() { System.out.println("Using @Ignore , this execution is ignored"); }
使い方 TestNG
以下のコード スニペットは、作業中の @Test(enabled=false) アノテーションの使用について説明しています。 TestNG:
@Test(enabled=false) public void TestWithException() { System.out.println("Method should be ignored as it's not ready yet"); }
例外テスト
例外テストは、次の両方で使用できます。 TestNG JUnit4. テストでどの例外がスローされたかを確認するために使用されます。
使い方 JUnit4
以下のコード スニペットは、作業中の例外テストの使用について説明しています。 JUnit4:
@Test(expected = ArithmeticException.class) public void divideByZero() { Int i = 1/0; }
使い方 TestNG
以下のコード スニペットは、作業中の例外テストの使用について説明しています。 TestNG:
@Test(expectedExceptions = ArithmeticException.class) public void divideByZero() { Int i = 1/0; }
タイムアウト
この機能はTestNgと JUnit4.タイムアウトは、指定した時間(ミリ秒)を超えてテストを終了するために使用されます。
使い方 JUnit4
以下のコード スニペットは、作業中のタイムアウト テストの使用について説明しています。 JUnit4:
@Test(timeout = 1000) public void method1() { while (true); }
使い方 TestNG
以下のコード スニペットは、作業中のタイムアウト テストの使用について説明しています。 TestNG:
@Test(timeOut = 1000) public void method1() { while (true); }
パラメータ化されたテスト
JUnit パラメータ化テストと呼ばれる、より簡単で読みやすいテスト手法を提供します。 TestNG JUnit はパラメータ化されたテストをサポートしていますが、パラメータ値を定義する方法が異なります。これを一つずつ見ていきましょう。
使い方 JUnit4
「@RunWith」および「@Parameter」アノテーションは、単体テストのパラメータ値を提供するために使用されます。 注釈 @Parameters は List[] を返す必要があります。このパラメータは引数としてクラス コンストラクターに渡されます。
@RunWith(value = Parameterized.class) public class JunitTest{ privateint number; public JunitTest6(int number) { this.number = number; } @Parameters public static Collection<Object[]> data() { Object[][] data = new Object[][] { { 1 }, { 2 }, { 3 }, { 4 } }; returnArrays.asList(data); } @Test public void parameterTest() { System.out.println("Parameterized Number is : " + number); } }
使い方 TestNG
In TestNG, XML ファイルまたは「@DataProvider」は、テスト用のパラメーターを提供するために使用されます。
ここでメソッド内で宣言された @Parameters アノテーションにはテスト用のパラメータが必要です。パラメータとして使用されるデータは次のように提供されます。 TestNGの XML 構成ファイル。こうすることで、単一のファイルを再利用できます。 テストケース 異なるデータセットを使用すると、異なる結果が得られる可能性があります。
public class Test1 { @Test @Parameters(value="number") public void parameterTest(int number) { System.out.println("Parameterized Number is : " + number); } }
上記のクラスで使用される以下の XML ファイルを参照してください。
<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" > <suite name="My test suite"> <test name="testing"> <parameter name="number" value="2"/> <classes> <class name="com.guru99.Test1" /> </classes> </test> </suite>
製品概要
私たちは見ました JUnit4本、そして TestNG 詳細に比較します。パラメータ化されたテストと依存性テストを除いて、どちらも類似していることもわかりました。簡単に言えば、柔軟性と要件に基づいて、ユニット テストにどちらか 1 つを選択できます。