이 글은 온라인 강의를 듣고 해당 내용을 직접 실습해보며 정리한 글입니다. 더 자세한 내용은 아래 강의에서 확인할 수 있습니다.
더 자바, 애플리케이션을 테스트하는 다양한 방법 - 인프런 | 강의(백기선)
@DisplayNameGeneration
: 클래스 안의 모든 테스트명 변경
@DisplayNameGeneration([테스트명 변경 규칙 클래스])
@DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class)
@SpringBootTest
class StudyTest {
@Test
void create_new_test() {
System.out.println("it is test");
}
}
기본적으로 테스트명은 메소드명을 따릅니다. 클래스에 @DisplayNameGeneration
을 선언하면 설정한 규칙에 따라 테스트명을 변경해줍니다.
DisplayNameGenerator.ReplaceUnderscores.class
: 모든 테스트 메소드명에 언더바를 제거해줍니다.
@DisplayName
: 테스트명 변경
@DisplayName("테스트명")
@Test
@DisplayName("스터디_테스트_😂")
void create_new_test() {
System.out.println("it is test");
}
메소드 단위에 선언하며 해당 테스트명을 변경합니다. @DisplayNameGeneration
보다 우선순위가 높습니다.
@EnabledOnOs
: 특정 OS 에서만 테스트 수행
@EnabledOnOs([OS 클래스])
@Test
@EnabledOnOs({OS.WINDOWS, OS.LINUX}) // OS 에 특화된 테스트
public void window() { System.out.println("WINDOW/LINUX TEST");}
@Test
@DisabledOnOs({OS.LINUX})
public void not_linux() { System.out.println("LINUX TEST");}
@EnabledOnJre
: 특정 자바 버전 에서만 테스트 수행
@EnabledOnJre([JRE 클래스])
@Test
@EnabledOn Jre({JRE.JAVA_8, JRE.JAVA_9, JRE.JAVA_10, JRE.JAVA_11}) // 자바 버전 에 특화된 테스트
public void jre() { System.out.println("JRE TEST");}
@EnabledIfEnvironmentVariable
: 특정 환경변수 에서만 테스트 수행
@EnabledIfEnvironmentVariable(named = [환경변수명], matches = [참이길 바라는 환경변수 값])
@Test
@EnabledIfEnvironmentVariable(named = "PROCESSOR_LEVEL", matches = "6") // 환경변수 에 특화된 테스트
public void env() { System.out.println("env TEST");}
@Tags
: 테스트 그룹화. 하고 싶은 테스트만 선택해서 실행 가능
@Tag([그룹지을 태그명])
@Test
@Tag("fast")
public void tag() {
System.out.println("fast");
}
수행을 원하는 테스트에만 @Tag
를 선언합니다.
InteliJ Junit Configuration 에서 Tags 를 선택 후 직접 입력한 태그명인 fast를 입력합니다.
그리고 테스트를 실행하면, @Tag("fast")
가 붙은 테스트만 수행됩니다.
@RepeatedTest
: 테스트 반복 수행
@RepeatedTest([반복횟수])
@RepeatedTest(value = [반복횟수], name = "{displayName}, {currentRepetition} / {totalRepetitions}")
@RepeatedTest(5)
public void repeat() {
System.out.println("repeat");
}
@DisplayName("반복 테스트")
@RepeatedTest(value = 3, name = "{displayName}, {currentRepetition} / {totalRepetitions}")
public void repeat(RepetitionInfo repetitionInfo) {
System.out.println("repeat: " + repetitionInfo.getCurrentRepetition() + "/" + repetitionInfo.getTotalRepetitions());
}
@RepeatedTest
안에서 예약된 변수명으로 정보를 얻을 수 있습니다.
{displayName}
: 테스트명{currentRepetition}
: 현재 테스트 횟수{totalRepetitions}
: 전체 테스트 횟수
RepetitionInfo
객체를 인자로 받아 횟수 정보를 얻을 수 있습니다.
repetitionInfo.getCurrentRepetition()
: 현재 테스트 횟수repetitionInfo.getTotalRepetitions()
: 전체 테스트 횟수
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
: 테스트 인스턴스 한 번만 생성
@SpringBootTest
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
class StudyTest {...}
Junit5 는 기본 전략으로 테스트 메소드를 실행 할 때마다 테스트 인스턴스를 생성합니다. 각 테스트 간의 의존성을 방지하기 위함이죠. 하지만 테스트 클래스에 인스턴스 변수를 선언한다거나 테스트 간 의존성이 필요할 경우에는 @TestInstance(TestInstance.Lifecycle.PER_CLASS)
로 테스트 인스턴스를 한 번만 생성하게 설정할 수 있습니다.
Junit5 애노테이션 설명
글 읽어주셔서 언제나 감사합니다. 좋은 피드백, 개선 피드백 너무나도 환영합니다.
연관글
'SearchDeveloper > 애플리케이션테스트' 카테고리의 다른 글
TestContainers 설명 (0) | 2022.08.02 |
---|---|
[Postman] Runner 와 newman 으로 response 파일에 쓰기 (0) | 2022.07.24 |
Junit5 Assertions / Assumptions 설명 (0) | 2022.07.24 |
Mockito 설명 (0) | 2022.07.24 |