1. 개요
이 짧은 예제에서, 우리는 비 - 정적 메서드 구현하는거야 @BeforeAll을 하고 @AfterAll이 가능 어노테이션을 Junit5 .
2. 비정적 메서드의 @BeforeAll 및 @AfterAll
단위 테스트 중에 @BeforeAll 및 @AfterAll 을 비정적 설정 및 해제 방법(예: @ Nested 테스트 클래스 또는 인터페이스 기본 방법) 에서 사용하고 싶을 수 있습니다 .
@BeforeAll 및 @AfterAll 메서드를 비정적으로 사용하여 테스트 클래스를 생성해 보겠습니다 .
public class BeforeAndAfterAnnotationsUnitTest {
String input;
Long result;
@BeforeAll
public void setup() {
input = "77";
}
@AfterAll
public void teardown() {
input = null;
result = null;
}
@Test
public void whenConvertStringToLong_thenResultShouldBeLong() {
result = Long.valueOf(input);
Assertions.assertEquals(77l, result);
}
}
위의 코드를 실행하면 예외가 발생합니다.
org.junit.platform.commons.JUnitException: ...
이제 이 상황을 피할 수 있는 방법을 살펴보겠습니다.
3. @TestInstance 어노테이션
@TestInstance 어노테이션을 사용하여 테스트의 수명 주기를 구성합니다. 테스트 클래스에서 선언하지 않으면 수명 주기 모드는 기본적 으로 PER_METHOD가 됩니다 . 그래서 던지는에서 우리의 테스트 클래스를 방지하기 위해 JUnitException을, 우리는 그것을 어노테이션을 필요 @TestInstance (TestInstance. Lifecycle.PER_CLASS) .
테스트 클래스를 다시 실행하고 @TestInstance(TestInstance.Lifecycle.PER_CLASS )를 추가해 보겠습니다.
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class BeforeAndAfterAnnotationsUnitTest {
String input;
Long result;
@BeforeAll
public void setup() {
input = "77";
}
@AfterAll
public void teardown() {
input = null;
result = null;
}
@Test
public void whenConvertStringToLong_thenResultShouldBeLong() {
result = Long.valueOf(input);
Assertions.assertEquals(77l, result);
}
}
이 경우 테스트가 성공적으로 실행됩니다.
4. 결론
이 짧은 기사 에서 비정적 메서드에서 @BeforeAll 및 @AfterAll 을 사용하는 방법을 배웠습니다 . 먼저 @TestInstance 어노테이션을 포함하지 않으면 어떻게 되는지 보여주기 위해 간단한 비정적 예제로 시작했습니다 . 그런 다음 JUnitException 이 발생하는 것을 방지하기 위해 @TestInstance(TestInstance.Lifecycle.PER_CLASS) 로 테스트에 어노테이션을 달았습니다 .
항상 그렇듯이 이 모든 예제의 구현은 GitHub에서 끝났습니다 .