다음 테스트는 각 테스트(메서드)마다 새롭게 number 멤버 변수가 생성되기 때문에 두 테스트 모두 0이 출력된다.
class NonStatefulTest {
private int number;
@Test
void test1() {
System.out.println(number++);
}
@Test
void test2() {
System.out.println(number++);
}
}
<결과>
0 //test1
0 //test2
이를 Stateful하게 테스트를 작성하고 싶다면 다음과 같이 애노테이션을 설정하면 된다.
//default: @TestInstance(TestInstance.Lifecycle.PER_METHOD)
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
class StatefulTest {
private int number;
@Test
void test1() {
System.out.println(number++);
}
@Test
void test2() {
System.out.println(number++);
}
}
<결과>
0 //test1
1 //test2
JUnit은 일반적으로 단위 테스트 간에 순서를 보장해주지 않기 때문에 다음과 같이 순서를 부여할 수 있다.
특히, Stateful 테스트에서 순서를 부여하면 원하는 의도대로 테스트 짜기 좋다.
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
class StatefulTest {
private int number;
@Test @Order(2)
void test1() {
System.out.println(number++);
}
@Test @Order(1)
void test2() {
System.out.println(number++);
}
}
<결과>
0 //test2
1 //test1
'java > intelliJ' 카테고리의 다른 글
[Intellij] 디버그 (0) | 2021.07.13 |
---|---|
[Intellij] import문 자동 정리하기 (1) | 2021.07.13 |
[Intellij] 인텔리제이 단축키, 템플릿 정리 - Mac (2) | 2021.06.24 |
IntelliJ에서 Gradle 사용시 자바 직접 실행 (0) | 2021.02.10 |
IntelliJ에서 Live Template 추가하기 (0) | 2021.01.13 |