반응형
JUnit을 추가하는 방법을 모르신다면 [JUnit] - JUnit5 시작하기 를 참고 하시길 바랍니다.
[JUnit] - JUnit5 시작하기
JUnit이란? 자바용 단위 테스트(Unit Test) 도구 장점 테스트를 하기 위해 일일히 System.out.prinlnt 로 찍어볼 필요가 없다. @Test 메소드가 호출될 때 마다 새로운 인스턴스가 생성되어 독립적인 테스트
iseunghan.tistory.com
JUnit 기본 Annotation
@BeforeAll
- 해당 annotation이 달린 메소드는 모든 메소드가 실행되기 전에 가장 먼저 실행된다.
- 반드시 static 으로 선언 되어야 한다.
- 이전의
@BeforeClass
와 동일
@BeforeAll
static void before() {
// 모든 메소드가 실행되기 전 실행된다.
}
@BeforeEach
- 해당 annotation이 달린 메소드는 각각의 테스트 메소드가 실행되기 전에 실행된다.
- 이전의
@Before
와 동일
@BeforeEach
void before() {
// `@BeforeEach` 가 붙은 메소드는 각각의 테스트 메소드가 실행되기 전 실행됩니다.
}
@AfterAll
- 해당 annotation이 달린 메소드는 모든 메소드가 실행된 이후에 실행된다.
- 반드시 static으로 선언 되어야 한다.
- 이전의
@AfterClass
와 동일
@AfterAll
static void after() {
// 모든 테스트 메소드가 실행되고 난 뒤 실행
}
@AfterEach
- 해당 annotation이 달린 메소드는 각 테스트 메소드 실행 이후에 실행된다.
- 이전의
@After
와 동일
@AfterEach
void after() {
// 각 테스트 메소드 실행 이후에 실행
}
@DisplayName
- 테스트 클래스와 메소드의 이름을 정의할 수 있다.
@Target( {ElementType.TYPE, ElementType.METHOD})
@Test
@DisplayName("테스트 이름 정의")
void testTest() {
// tests
}
@Disabled
- 해당 annotation이 달린 메소드는 비활성화가 된다. (테스트를 건너뜀)
- 이전의
@Ignore
과 동일 @Target({ElementType.TYPE, ElementType.METHOD})
@Test
@Disabled
void disableTest() {
// tests
}
Assertions
org.junit.jupiter.api.Assertions
assertEquals(expected, actual)
- expected: 해당 값이 나오길 기대하는 값
- actual: 실제 로직을 수행해서 나온 값
int x = 1 + 2;
assertEquals(3, x);
assertTrue
@Test
void test() {
..
assertTrue(10 > 5);
assertEquals(true, true); // (expected, actual)
}
@Test
void lambdaExpressions() {
assertTrue(Stream.of(1, 2, 3)
.stream()
.mapToInt(i -> i)
.sum() > 5 , () -> "Sum should be greater than 5");
}
assertAll
@Test
void groupAssertions() {
int[] numbers = {0, 1, 2, 3, 4};
assertAll("numbers",
() -> assertEqauls(numbers[0], 1);
() -> assertEqauls(numbers[1], 2);
() -> assertEqauls(numbers[2], 3);
);
}
그룹 내에서 실패한 assertions 을 MultipleFailuresError 와 함께 기록할 수 있다.
그리하여 실패의 정확한 위치를 파악할 수 있기 때문에 보다 복잡한 assertions 을 만들어도 안전하게 사용할 수 있다.
Assumptions
...
Exception Testing
assertThrows()
- 두 가지 예외 테스트 방법
1. 발생한 예외의 세부 사항을 확인
@Test
void throwsException() {
Throwable exception = assertThrows(UnsupportedOperationException.class, () -> {
throw new UnsupportedOperationException("Not supported");
});
assertEquals(exception.getMessage(), "Not supported");
}
2. 예외 유형의 유효성을 검사
@Test
void assertThrowException() {
String str = null;
assertThrows(IllegalArgumentException.class, () -> {
Integer.valueOf(str);
});
}
References
gmlwjd9405.github.io/2019/11/26/junit5-guide-basic.html
[JUnit] JUnit5 사용법 - 기본 - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io
A Guide to JUnit 5 | Baeldung
A quick and practical guide to JUnit 5
www.baeldung.com
반응형