다음 테스트 코드가 있다.
class CarTest {
private int number = 0;
@Test
void test1() {
System.out.println(++number);
}
@Test
void test2() {
System.out.println(++number);
}
}
이 클래스 테스트들을 돌리면 결과가 어떻게 나올까.
1과 2?
나도 처음엔 그렇게 생각했다.
하지만 정답은
1과 1이다.
왜냐하면, JUnit 에서는 @Test 가 붙은 테스트 메서드를 실행시킬 때, 각각 클래스를 새로 로딩(?) 한다.
그럼 처음 생각했던 대로 1, 2가 나오게 하려면 어떻게 해야 할까.
@TestInstance 어노테이션을 사용하면 된다.
이 어노테이션에는 인수를 설정할 수 있는데,
@TestInstance(TestInstance.Lifecycle.PER_CLASS) 처럼 하면 라이프사이클당 한번의 클래스를 생성하도록 할 수 있다.
눈치빠르면 알 수 있지만, 디폴트는
@TestInstance(TestInstance.Lifecycle.PER_METHOD) 이다.
'JUnit (Test)' 카테고리의 다른 글
@TestMethodOrder (0) | 2021.01.31 |
---|---|
JUnit 5 새로 배운 것 (0) | 2021.01.30 |
JUnit5 이 무엇입니까? (0) | 2021.01.29 |
Exception 테스트하기 (0) | 2020.12.06 |
private 메소드 테스트 (0) | 2020.12.06 |