JUnit 5 : Assertion


インフラストラクチャの「より多くのJavaとアプリケーションをテストするためのさまざまな方法」を確認し、まとめました.
1. Assertion
  • は、値
  • を検証するためのassertで始まる静的(静的)方法を提供する.
  • JUnit 4からの断言方法と新しいjava 8ラムダ式追加方法
  • があります.
  • assertEqulas(expected, actual)
  • 実績値が予想値と同じかどうかを確認する
  • assertNotNull(actual)
  • の値がNull
  • であるかどうかを確認します.
  • assertTrue(boolean)
  • 次の条件が真であることを確認する:
  • assertAll(executables...)
  • すべての確認構文をチェック
  • パラメータとして
  • 関数インタフェースを持つExecutableリスト
  • ラムティーポイントを使用すると、複数の検証リストを
  • に送信できます.
  • assertThrows(expectedType, executable)
    検査
  • 異常
  • assertTimeout(duration, executable)
  • 指定された時間内に実行が完了していることを確認してください.
  • @DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class)
    class StudyTest {
    
        @DisplayName("스터디 만들기")
        @Test
        void assertAllTest() {
            Study study = new Study(-1);
    
            assertAll(
                    () -> assertNotNull(study),
                    () -> assertEquals(StudyStatus.DRAFT, study.getStatus(),
                            () -> "스터디를 처음 만들면 상태값이 " + StudyStatus.DRAFT + "이어야 한다."),
                    () -> assertTrue(study.getLimit() > 0, "스터디 최대 참석 가능 인원은 0보다 커야한다.")
            );
        }
    
        @Test
        void assertThrowsTest() {
            IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () -> new Study(-10));
            String message = exception.getMessage();
            assertEquals("limit은 0보다 커야 한다.", message);
        }
    
        @Test
        void assertTimeoutTest() {
    //        assertTimeout(Duration.ofMillis(10), () -> new Study(-10));
            assertTimeout(Duration.ofMillis(10), () -> {
                new Study(10);
                Thread.sleep(100);
            });
    
    //        정해진 시간이 됬을 때 바로 끝남
    //        Thead관련 문제가 발생 할 수 있으므로 사용에 주의의
    //       assertTimeoutPreemptively(Duration.ofMillis(100), () -> {
    //            new Study(10);
    //            Thread.sleep(200);
    //        });
        }
    
        @BeforeAll
        static void beforeAll() {
            System.out.println("BeforeAll!");
        }
    
        @AfterAll
        static void afterAll() {
            System.out.println("AfterAll!");
        }
    
        @BeforeEach
        void setUp() {
            System.out.println("BeforeEach!");
        }
    
        @AfterEach
        void tearDown() {
            System.out.println("AfterEach!");
        }
    }