@Nested 클래스로 비슷한 함수를 묶어 알아보기 쉽게함
Junit 5 User Guide - Nested Test 를 보면 좋은 예제를 제공
public class DisplayNameTest {
@Test
public void testAsuccess() { /* */ }
@Test
public void testAfail() { /* */ }
@Test
public void test1success() { /* */ }
@Test
public void test1success() { /* */ }
@Test
public void test2success() { /* */ }
@Test
public void test2fail() { /* */}
}
public class DisplayNameTest {
@Nested
class testA {
@Test
public void success() {/* */ }
@Test
public void fail() {/* */ }
}
@Nested
class testNumber {
@Nested
class test1 {
@Test
public void success() {/* */ }
@Test
public void fail() {/* */ }
}
@Nested
class test2 {
@Test
public void success() {/* */ }
@Test
public void fail() {/* */ }
}
}
}
전체적인 코드의 양은 늘어났지만 계층적인 구조가 되어 훨씬 알아보기 편해졌다
게다가 클래스로 구분되어 있으니 success 와 fail 을 중복으로 사용해도 전혀 문제가 없다
!https://github.com/ParkJiwoon/PrivateStudy/blob/master/images/nested-display-name-1.png?raw=true
테스트 결과에서도 비슷한 테스트끼리 묶고 결과를 좀더 심플하게 표현
@Nested 클래스로 계층을 나누어도 여전히 함수명은 알아보기 어렵다.
JUnit 5 User Guide - Display Names 에 나와있는 예제를 보면 함수명이 길어지니 한눈에 들어오지 않지만 @DisplayName 어노테이션을 사용하면 간단하게 표현할 수 있다.
@DisplayName 은 @Nested 클래스와 함께 쓰면 더 빛을 발한다.
public class DisplayNameTest {
@Nested
@DisplayName("A 테스트")
class testA {
@Test
@DisplayName("성공")
public void success() {/* */ }
@Test
@DisplayName("실패")
public void fail() {/* */ }
}
@Nested
@DisplayName("숫자")
class testNumber {
@Nested
@DisplayName("1 테스트")
class test1 {
@Test
@DisplayName("성공")
public void success() {/* */ }
@Test
@DisplayName("실패")
public void fail() {/* */ }
}
@Nested
@DisplayName("2 테스트")
class test2 {
@Test
@DisplayName("성공")
public void success() {/* */ }
@Test
@DisplayName("실패")
public void fail() {/* */ }
}
}
}
!https://github.com/ParkJiwoon/PrivateStudy/blob/master/images/nested-display-name-2.png?raw=true
DisplayName 을 쓰기로 결정한이유
@Nested 와 함께 쓰려면 클래스를 작성해야 하는데 한글명으로 만드는 것보단 @DisplayName 을 쓰는게 깔끔함@DisplayName 어노테이션을 추가했다는 점Preferences > Build, Execution, Deployment > Build Tools > Gradle 로 이동Run tests using 을 IntelliJ IDEA 로 변경!https://github.com/ParkJiwoon/PrivateStudy/blob/master/images/nested-display-name-3.png?raw=true