Spring Test Code - 1

개발 공부 중·2022년 9월 30일
0

Spring

목록 보기
3/8

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

profile
개발 공부 중

0개의 댓글