BackEnd/JUnit
JUnit 5. 테스트 인스턴스
hanseom
2022. 2. 3. 17:50
반응형
JUnit은 기본 전략으로 테스트 메소드마다 테스트 인스턴스를 새로 만듭니다. 테스트간 의존성을 없애고 독립적으로 실행하여 예상치 못한 부작용을 방지하기 위함입니다. 아래 코드에서 value 값을 증가시키기 때문에 1, 2, 3이 출력되어야 할 것 같지만 결과는 모두 1이 출력됩니다.
package com.java.JUnit5;
import org.junit.jupiter.api.Test;
public class InstanceTests {
int value = 1;
@Test
void printOne() {
System.out.println(value++); // [결과]: 1
}
@Test
void printTwo() {
System.out.println(value++); // [결과]: 1
}
@Test
void printThree() {
System.out.println(value++); // [결과]: 1
}
}
해당 전략을 JUnit 5에서 변경할 수 있습니다. @TestInstance(Lifecycle.PER_CLASS)를 사용하면 테스트 클래스당 인스턴스를 하나만 만들어 사용합니다.
package com.java.JUnit5;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInstance;
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class InstanceTests {
int value = 1;
@Test
void printOne() {
System.out.println(value++); // [결과]: 1
}
@Test
void printTwo() {
System.out.println(value++); // [결과]: 2
}
@Test
void printThree() {
System.out.println(value++); // [결과]: 3
}
}
반응형