JUnit 例を含む注釈チュートリアル: @Test と @After とは何ですか

何ですか JUnit 注釈?

JUnit 注釈 は、追加できる特別な形式の構文メタデータです。 Java ソースコードに注釈を付けることで、コードの可読性と構造が向上します。変数、パラメータ、パッケージ、メソッド、クラスに注釈を付けることができます。注釈はJunit4で導入され、 Java コードがより読みやすくシンプルになります。これが Junit3 と Junit4 の大きな違いで、Junit4 は注釈ベースです。

Junit5のアノテーションの知識があれば、簡単に学習して実装することができます。 JUnit テスト。以下は重要かつ頻繁に使用されるものです JUnit 注釈リスト:

S.No. 注釈 説明
1. @テスト このアノテーションは、それが添付された public void メソッドをテスト ケースとして実行できることを示す org.junit.TestCase の代わりです。
2. @前に このアノテーションは、各テスト ケースの前に前提条件などのステートメントを実行する場合に使用されます。
3. @BeforeClass このアノテーションは、すべてのテスト ケースの前にテスト接続を実行する必要があるなど、すべてのテスト ケースの前にいくつかのステートメントを実行する場合に使用されます。
4. @後 このアノテーションは、各ステートメントの後にいくつかのステートメントを実行する場合に使用できます。 テストケース たとえば、変数のリセット、一時ファイル、変数の削除など。
5. @放課後 このアノテーションは、すべてのテスト ケースの実行後にリソースを解放するなど、すべてのテスト ケースの後にいくつかのステートメントを実行する場合に使用できます。
6. @無視します このアノテーションは、テスト実行中に一部のテスト ケースを無効にするなど、テスト実行中に一部のステートメントを無視する場合に使用できます。
7. @テスト(タイムアウト=500) このアノテーションは、SLA (サービス レベル アグリーメント) に基づいて作業しており、指定された時間内にテストを完了する必要がある場合など、テストの実行中にタイムアウトを設定する場合に使用できます。
8. @Test(expected=IllegalArgumentException.class) このアノテーションは、テスト実行中に何らかの例外を処理する場合に使用できます。たとえば、特定のメソッドが指定された例外をスローしているかどうかをチェックする場合などです。

JUnit 注釈の例

重要なことをカバーするクラスを作成しましょう JUnit 単純な print ステートメントで注釈を付け、テスト ランナー クラスで実行します。

ステップ1) 上記のアノテーションに関連付けられたさまざまなメソッドを持つ以下の Java クラスを考えてみましょう。

JunitAnnotationsExample.java

package guru99.junit;		

import static org.junit.Assert.assertEquals;				
import static org.junit.Assert.assertFalse;				

import java.util.ArrayList;		

import org.junit.After;		
import org.junit.AfterClass;		
import org.junit.Before;		
import org.junit.BeforeClass;		
import org.junit.Ignore;		
import org.junit.Test;		

public class JunitAnnotationsExample {				

    private ArrayList<String> list;					

    @BeforeClass		
    public static void m1() {							
        System.out.println("Using @BeforeClass , executed before all test cases ");					
    }		

    @Before		
    public void m2() {					
        list = new ArrayList<String>();					
        System.out.println("Using @Before annotations ,executed before each test cases ");					
    }		

    @AfterClass		
    public static void m3() {							
        System.out.println("Using @AfterClass ,executed after all test cases");					
    }		

    @After		
    public void m4() {					
        list.clear();			
        System.out.println("Using @After ,executed after each test cases");					
    }		

    @Test		
    public void m5() {					
        list.add("test");					
        assertFalse(list.isEmpty());			
        assertEquals(1, list.size());			
    }		

    @Ignore		
    public void m6() {					
        System.out.println("Using @Ignore , this execution is ignored");					
    }		

    @Test(timeout = 10)			
    public void m7() {					
        System.out.println("Using @Test(timeout),it can be used to enforce timeout in JUnit4 test case");					
    }		

    @Test(expected = NoSuchMethodException.class)					
    public void m8() {					
        System.out.println("Using @Test(expected) ,it will check for specified exception during its execution");					

    }		

}		

ステップ2) 上記のテストを実行するテスト ランナー クラスを作成しましょう。

テストランナー.java

package guru99.junit;		

import org.junit.runner.JUnitCore;		
import org.junit.runner.Result;		
import org.junit.runner.notification.Failure;		

public class TestRunner {				
			public static void main(String[] args) {									
      Result result = JUnitCore.runClasses(JunitAnnotationsExample.class);					
			for (Failure failure : result.getFailures()) {							
         System.out.println(failure.toString());					
      }		
      System.out.println("Result=="+result.wasSuccessful());							
   }		
}      	

期待される結果

  • すべてのテスト ケースが XNUMX つずつ実行され、すべての print ステートメントがコンソールに表示されます。
  • 上の表で説明したように、 @Before アノテーション JUnit, @BeforeClass [メソッド m1() および m2() ] は、それぞれ各テスト ケースの前とすべてのテスト ケースの前に実行されます。
  • 同様に @After で JUnit, @afterClass (メソッド m3() および m4()) は、それぞれ各テスト ケースの後およびすべてのテスト ケースの後に実行されます。 @ignore (method m6()) はテストを無視するものとして扱われます。

上記の Java クラスで使用されるテスト ケースを詳細に分析してみましょう。

  1. 以下に示すメソッド m5() を考えてみましょう。
	@Test		
    public void m5() {					
        list.add("test");					
        assertFalse(list.isEmpty());			
        assertEquals(1, list.size());			
    }		

上記のメソッドでは、変数「list」に文字列を追加しているため、

  • list.isEmpty() false を返します。
  • assertFalse(list.isEmpty()) true を返さなければなりません。
  • その結果、テストケースは次のようになります。 パス.

リストに文字列を XNUMX つだけ追加したため、サイズは XNUMX になります。

  • リスト.サイズ() int 値を「1」として返す必要があります。
  • So assertEquals(1, list.size()) true を返さなければなりません。
  • その結果、テストケースは次のようになります。 パス.
  1. 以下に示すメソッド m7() を考えてみましょう。
@Test(timeout = 10)		
    public void m7() {					
        System.out.println("Using @Test(timeout),it can be used to enforce timeout in JUnit4 test case");					
    }		

上記で説明したように @Test(タイムアウト = 10)注釈は、テスト ケースでタイムアウトを強制するために使用されます。

  1. 以下に示すメソッド m8() を考えてみましょう。
@Test(expected = NoSuchMethodException.class)				
    public void m8() {					
        System.out.println("Using @Test(expected) ,it will check for specified exception during its execution");					
    
    }		

上記で説明したように @Test(期待される) は実行中に指定された例外をチェックするため、メソッド m8() は「No such Method Exception」をスローします。 その結果、テストは例外とともに実行されます。

すべてのテスト ケースが合格すると、テストの実行が成功します。

実結果

上記の例ではテスト ケースが XNUMX つあるため、すべてのテスト ケースが XNUMX つずつ実行されます。 以下の出力を参照してください。

JUnit 注釈の例
JUnit 注釈の例

コンソールで確認できる以下の print ステートメントを参照してください。

@BeforeClass を使用して、すべてのテスト ケースの前に実行されます。

@Before アノテーションを使用して、各テスト ケースの前に実行されます。

@After を使用し、各テスト ケースの後に実行

@Before アノテーションを使用して、各テスト ケースの前に実行されます。

@Test(timeout) を使用すると、タイムアウトを強制することができます。 JUnit4 テストケース

@After を使用し、各テスト ケースの後に実行

@Before アノテーションを使用して、各テスト ケースの前に実行されます。

@Test(expected) を使用すると、実行中に指定された例外がないかチェックします。

@After を使用し、各テスト ケースの後に実行

@AfterClass を使用し、すべてのテスト ケースの後に実行

JUnit クラスのアサート

このクラスは、テスト ケースの作成に役立つ一連のアサーション メソッドを提供します。 すべての Assert ステートメントが合格すると、テスト結果は成功となります。 いずれかの Assert ステートメントが失敗すると、テスト結果は失敗します。

前に見たように、以下の表に重要な Assert メソッドと説明を示します。

S.No. 方法 説明
1. voidassertEquals(期待されるブール値、実際のブール値) オブジェクトクラスのequalsメソッドと同様にXNUMXつの値が等しいかどうかをチェックします
2. voidassertFalse(ブール条件) 機能は、条件が false であることを確認することです。
3. voidassertNotNull(オブジェクトオブジェクト) 「assertNotNull」機能は、オブジェクトが null でないことを確認する機能です。
4. voidassertNull(オブジェクトオブジェクト) 「assertNull」機能は、オブジェクトが null であることを確認する機能です。
5. voidassertTrue(ブール条件) 「assertTrue」機能は、条件が true であることを確認する機能です。
6. ボイドフェイル() アサーション エラーをスローしたい場合は、常に失敗判定となるfail()を使用します。
7. voidassertSame([文字列メッセージ] 「assertSame」機能は、XNUMX つのオブジェクトが同じオブジェクトを参照していることを確認します。
8. voidassertNotSame([文字列メッセージ] 「assertNotSame」機能は、XNUMX つのオブジェクトが同じオブジェクトを参照していないことをチェックします。

JUnit テストケースクラス

複数のテストを実行するには、TestCase クラスを使用できます。 org.junit.テストケース パッケージ。 @Test アノテーションでわかること JUnit この public void メソッド (ここではテスト ケース) がアタッチされているこのメソッドは、テスト ケースとして実行できることを確認します。

以下の表は、で利用可能ないくつかの重要なメソッドを示しています。 org.junit.テストケース クラス:

S.No. 方法 説明
1. int countTestCases() このメソッドは、実行されたテスト ケースの数をカウントするために使用されます。 run(TestResult tr) 方法。
2. TestResult createResult() このメソッドは、 テスト結果 オブジェクト。
3. 文字列getName() このメソッドは、単なる文字列を返します。 テストケース.
4. TestResult run() このメソッドは、 テスト結果 オブジェクト
5. void run(TestResult 結果) このメソッドは、次のようなテストを実行するために使用されます。 テスト結果 何も返さないオブジェクト。
6. void setName(String name) このメソッドは、名前を設定するために使用されます。 テストケース。
7. void setUp() このメソッドは、リソース関連付けコードを記述するために使用されます。 たとえば、データベース接続を作成します。
8. void ティアダウン() このメソッドは、リソース解放コードを記述するために使用されます。例: トランザクション操作を実行した後、データベース接続を解放します。

JUnit TestResult クラス

テストを実行すると、結果が (次の形式で) 返されます。 テスト結果 物体)。 この TestResult オブジェクトは、結果のオブジェクトを分析するために使用できます。 このテスト結果は失敗または成功のいずれかになります。

org.junit.TestResult クラスで使用される重要なメソッドについては、以下の表を参照してください。

S.No. 方法 説明
1. void addError(テストテスト、Throwable t) このメソッドは、テストにエラーを追加する必要がある場合に使用されます。
2. void addFailure(テストテスト、AssertionFailedError t) このメソッドは、障害のリストに障害を追加する必要がある場合に使用されます。
3. void endTest(テストテスト) テストの実行(完了)を通知するメソッドです。
4. int errorCount() このメソッドは、テスト実行中に検出されたエラーを取得するために使用されます。
5. 列挙エラー() このメソッドは単にエラーのコレクション (ここでは列挙) を返します。
6. int FailureCount() このメソッドは、テスト実行中に検出されたエラーの数を取得するために使用されます。
7. ボイドラン(TestCaseテスト) このメソッドはテスト ケースを実行するために使用されます。
8. int runCount() このメソッドは単に実行されたテストをカウントします。
9. void startTest(テストテスト) このメソッドは、テストの開始を通知するために使用されます。
10. ボイドストップ() この方法は試運転を停止する場合に使用します。

JUnit テストスイートクラス

複数のテストを指定した順序で実行したい場合は、すべてのテストを XNUMX か所に結合することで実行できます。 この場所はテストスイートと呼ばれます。

で使用される重要なメソッドについては、以下の表を参照してください。 org.junit.テストスイート クラス:

S.No. 方法 説明
1. void addTest(テストテスト) このメソッドは、スイートにテストを追加する場合に使用します。
2. void addTestSuite(クラステストクラス) このメソッドは、スイートにテストを追加するときにクラスを指定する場合に使用します。
3. int countTestCases() このメソッドは、テスト ケースの数をカウントする場合に使用されます。
4. 文字列getName() このメソッドは、テスト スイートの名前を取得するために使用されます。
5. void run(TestResult 結果) このメソッドは、テストを実行し、テスト結果を収集するために使用されます。 テスト結果 オブジェクト。
6. void setName(String name) このメソッドは、名前を設定するために使用されます。 テストスイート.
7. テスト testAt(int インデックス) このメソッドは、指定されたインデックスでテストを返したい場合に使用されます。
8. int testCount() このメソッドは、スイート内の多数のテストを返したい場合に使用されます。
9. 静的テスト警告(文字列メッセージ) このメソッドは失敗するテストを返し、警告メッセージを記録します。

製品概要

  • JUnit すべての重要なクラスと、 Selenium 単体テストの作成に役立つアノテーション。
  • テストケースを書くときに非常に役立つクラス
    • org.junit.アサート
    • org.junit.テストケース
    • org.junit.テスト結果
    • org.junit.テストスイート
  • 重要で頻繁に使用される JUnit 注釈リスト@前@授業前@後

    @放課後

    @テスト

    @無視する