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

何ですか TestNG?
TestNG NG は「Next Generation」を意味する自動テスト フレームワークです。 TestNG に触発され JUnit 注釈 (@) を使用します。 TestNG ~の欠点を克服します JUnit を作るように設計されています エンドツーエンドのテスト 簡単です。
使い方 TestNGを使用すると、適切なレポートを生成でき、合格したテスト ケースの数、失敗したテスト ケースの数、およびスキップされたテスト ケースの数を簡単に知ることができます。失敗したテスト ケースを個別に実行できます。
Junitとは何ですか?
JUnit オープンソースのユニットです テスト JAVA用のフレームワーク。 役に立つ Java 開発者が繰り返しテストを書いて実行できるようにします。Erich GammaとKent Beckが最初に開発しました。これはxUnitアーキテクチャのインスタンスです。名前が示すように、これは 単体テスト コードの小さな塊。
テスト駆動型方法論に従う開発者は、コードの前にまずユニットテストを記述して実行する必要があります。
コードの作成が完了したら、すべてのテストを実行すると、テストは成功するはずです。 コードを追加するたびに、すべてのテスト ケースを再実行して、何も壊れていないことを確認する必要があります。
違い JUnit (NAIST) と TestNG
両方 TestNG (NAIST) と JUnit4 は、XNUMX つまたは XNUMX つの機能を除いて同様に見えます。どちらのテクノロジーが単体テストに適しているかをすぐに判断するために、XNUMX つを比較してみましょう。以下の表は、両方でサポートされている機能を示しています。
注釈
両方 JUnit (NAIST) と 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 (NAIST) と 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 (NAIST) と 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 (NAIST) と 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 つを選択できます。

