JUnit5.araboja


📗 JUnit5 📕


Architecture


"The new major version of the programmer-friendly testing framework for Java 8 "
JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage

既存のJUnitバージョンとは異なり、JUnit 5は異なるサブプロジェクトからの異なるモジュールの集合である.
JUnit 5の実行にはJava 8以降が必要です.

  • JUnit PlatformJUnit Platformは、JVMベースのテストフレームワークを実行するための基礎モジュールである.
    プラットフォームモジュールは、プラットフォームベースの実行可能なすべてのテストにTestEngine APIを提供し、これらのテストをGradleMavenに連動させることができる.
    プラットフォームモジュールはまた、JUnit 4環境でプラットフォームモジュールを使用してテストするためのConsole Launcherを提供する.

  • JUnit JupiterRunnerは、JUnit 5に基づくテストケースを記述するプログラミングモデルおよび拡張モデルをサポートするモジュールであり、テスト作成者のためのJUnit Jupiterモジュールと、テスト実行のためのjunit-jupiter-apiモジュールとは別個である.
    Jupeterモジュールはまた、Jupeterに基づいて記述された試験例を実行するためにjunit-jupiter-engineを提供する.

  • JUnit VintageJUnit Platformは、低互換性を達成するために、TestEngine上でJUnit 3、JUnit 4に基づくテストを実行するためのモジュールである.
  • Jupiter API: assertions


    デフォルトassertメソッド、fail()メソッド

    JUnit Vintageクラスは、検証された静的方法を提供する.主な方法は次のとおりです.
  • assertEquals(expected, actual)
  • assertNotEquals(Object unexpected, Object actual)
  • assertTrue(boolean condition)
  • assertFalse(boolean condition)
  • assertNull(Object actual)
  • assertNotNull(Object actual)
  • fail()
  • assertAll()


    複数回の検証を試みた場合、最初のassertEquals()が失敗した場合、テストは失敗し、後続のassertEquals()は実行されません.
    assertAll()は、複数の検証を組み合わせてテストすることができます.
    public class AssertAllTest {
        @Test
        void assertAllSample() {
            Game game = new Game(123);
            Score score = game.guess(145);
            assertAll(
                    () -> assertEquals(2, score.getStrikes()),
                    () -> assertEquals(1, score.getBalls())
            );
        }
    }

    assertThrows()


    実行されたコードに特定のエクスポートが発生しているかどうかを確認するには、assertThrows()メソッドを使用します.
    @Test
    void simple() {
        assertThrows(ArithmeticException.class, () -> divide(100, 0));
    }
    
    private int divide(int op1, int op2) {
        return op1 / op2;
    }

    Jupiter API:ライフサイクルのテスト

    public class LifecycleTest {
    
        @BeforeAll // JUnit4의 @BeforeClass
        static void initAll() {
            System.out.println("테스트 Class 기준으로 테스트 메서드들이 실행되기전 실행");
        }
    
        @BeforeEach // JUnit4의 @Before
        void init() {
            System.out.println("각 테스트 메서드가 실행되기전 실행");
        }
    
        @Test
        void Test() {
            System.out.println("테스트 메서드");
        }
    
        @AfterEach // JUnit4의 @After
        void tearDown() {
            System.out.println("각 테스트 메서드가 실행된 후 실행");
        }
    
        @AfterAll // JUnit4의 @AfterClass
        static void tearDownAll() {
            System.out.println("테스트 Class 기준으로 테스트 메서드들이 실행된 후 실행");
        }
    }

    Dependencies

  • JUnit Platform
  • アイデンティティーの説明
    JUnit-Platform-CommonsJUnit内部で使用される汎用ライブラリ(またはユーティリティ).JUnitモジュールの外部での使用は一切考慮されません.
    JUnit Platform-コンソールを使用してJUnit Platformでテストを実行するサポートライブラリ
    JUnit-platform-console-単機ConsoleLauncherの実行可能JARファイル
    JUnitプラットフォーム-EngineJUnit 5に基づくテストAPI
    JUnitプラットフォームレベルのプラグインGradeプラットフォーム上のテストサポートライブラリ
    JUnit Platform Launcherテスト計画を構成および実行するAPI IDEおよび構築ツールで使用
    JUnit-platform-runnerJUnit 4環境でプラットフォーム使用率テストをサポートするランナー
    junit-platform-suite-apitestスイートの構成に関する説明
    JUnitプラットフォーム-surefire-ProviderMaven Surefreeサポートライブラリ
  • JUnit Jupiter
  • アイデンティティーの説明
    JUnit Jupiter API、JUnit Jupiter API(Runnerなど)の作成と拡張に使用
    JUnit Jupiter EngineメインピーターモジュールのTestEngine実装
    JUnit-platform-console-独立したパラメータを持つテスト用のサポートライブラリ
    junit-platform-engineJUnit 4からプライマリピーターモジュールへの移行サポートライブラリ
  • JUnit Vintage
  • アイデンティティーの説明
    JUnit Vintage-Engine JUnit VintageのTestEngine実現.JUnit PlatformでJUnit 3または4で作成したテストを実行するときに使用します.

    Reference.


    https://junit.org/junit5/docs/current/user-guide/
    https://stackoverflow.com/questions/38822189/why-were-junit-jupiter-and-junit-vintage-separated-when-i-running-testcase-in-in
    https://javacan.tistory.com/entry/JUnit-5-Intro
    https://awayday.github.io/2017-10-29/junit5-02/https://donghyeon.dev/junit/2021/04/11/JUnit5-完全-ガイド/