JUnit5부터는 리플랙션을 사용하고 있어 public과 private를 적을 필요가 없다.
(리플랙션을 사용하면 public과 private에 접근할 수 있다.)
@BeforeAll
테스트 실행 전 딱 한 번만 실행이 된다.
static void ~~(BeforeAll, AfterAll은 static이 붙어야 되고 리턴타입이 없어야 된다.)
@AfterAll
테스트 실행 후 딱 한 번만 실행이 된다.
static void ~~(BeforeAll, AfterAll은 static이 붙어야 되고 리턴타입이 없어야 된다.)
@BeforeEach
모든 테스트 실행 전 한 번 실행이 된다.
(굳이 static일 필요는 없다.)
@AfterEach
모든 테스트 실행 후 한 번 실행이 된다.
(굳이 static일 필요는 없다.)
@Disabled
이 테스트를 실행하고 싶지 않다.
@DisplayNameGeneration
테스트시 아래에 뜨는 이름을 원하는 방식으로 할 수 있다.
ex) @DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class)
->
@DisplayName("스터디 만들기")
각 각의 테스트에 이름을 따로 부여할 수 있다.(이모지 같은 것도 사용 가능)
(다양한 테스트를 하게 될 경우 테스트내용이 길어 어떤 테스트인지 빠르게 보기 어려우므로 사용)
내용 | 문법 |
---|---|
실제 값이 기대한 값과 같은지 확인 | assertEqulas(expected, actual) |
값이 null이 아닌지 확인 | assertNotNull(actual) |
다음 조건이 참(true)인지 확인 | assertTrue(boolean) |
모든 확인 구문 확인 | assertAll(executables...) |
예외 발생 확인 | assertThrows(expectedType, executable) |
특정 시간 안에 실행이 완료되는지 확인 | assertTimeout(duration, executable) |
특정한 조건에 만족하는 경우에 테스트를 실행하는 방법
assumeTrue(조건)
assumeingThat(조건, 테스트)
@EnabledOnJre({JRE.JAVA_8, JRE.JAVA_9, JRE.JAVA_10, JRE.JAVA_11})
-> 자바 8, 9, 10, 11에서 실행
@EnabledOnOs({OS.WINDOWS, OS.MAC})
-> 윈도우, 맥에서 실행
Enabled -> Disabled 변경하면 실행하지 않는다.
@Tag("")
테스트 코드에 Tag를 달아 태그가 달린 것만 실행 할 수 있다.
어노테이션 만들기
{
@Retention(RetentionPolicy.RUNTIME)
이 어노테이션을 사용한 코드가 어노테이션정보를 런타임까지 유지를 해야된다.
@Target(ElementType.METHOD)
이 어노테이션을 메소드에 쓸 수 있다.
}
@Tag를 쓸 때 오타가 날 수도 있으므로 어노테이션을 따로 만들고 사용하는 편이 좋다.
@RepeatedTest(10) @RepeatedTest(value = 10, name = "study, {currentRepetition}/{totalRepetitions}") System.out.println("test " + repetitionInfo.getCurrentRepetition() + "/" + repetitionInfo.getTotalRepetitions()); }
테스트를 10번 반복한다.
안의 repetitonInfo를 적을 경우 몇 번째 테스트인지도 알 수 있다.
@DisplayName("스터디 만들기") @ParameterizedTest(name = "{index} {displayName} message = {0}") @ValueSource(strings = {"날씨가", "많이", "추워지고", "있네요"}) void parameterizedTest(String message) { System.out.println(message); }
ValueSource에 있는 것들을 차례대로 테스트 할 수 있다.
인프런 강의 : https://www.inflearn.com/course/the-java-application-test
책 : 테스트 주도 개발 시작하기
참고 자료 :
https://twer.tistory.com/entry/JUnit5-RunWith
https://twer.tistory.com/entry/Mock%EA%B3%BC-Mocktio-Mock-MockBean