티스토리 뷰
로또 미션 2단계 코드 리뷰에서 다음과 같은 리뷰를 받았다.

처음에는 진짜 띠용?? 이었다. 😨
이걸 어떻게 검색해봐야하지..? 하는 고민이 들었었다.
그러다 크루들과 로또 미션 코드 회고를 할 기회가 생겼는데, 당시 이에 대해 아는 크루가 있는지 물어봤었다.
감사하게도 로마가 @ParameterizedTest에도 name 인자를 지정해 넘겨줄 수 있다는 것을 알려줬다!! 👍
회고를 통해 알게 된 것도 많고, 공부할 것들도 늘어나고, 아직 진짜 모르는게 많다는 생각도 들고.. 좋다.. 😹
JUnit5 User Guide를 확인해보니 "2.15.6. Customizing Display Names"라는 소주제로 해당 내용을 다루고 있었다.
왜 JUnit5 문서를 찾아볼 생각은 안 하고 검색부터 할려고 했을까.. 반성해라 나 자신.. 👊

기존 테스트 코드를 다음과 같이 작성했었는데
@ParameterizedTest
@CsvSource({"0, 14", "3, 11", "14, 0"})
@DisplayName("수동 로또 구매 후 남은 돈으로 살 수 있는 자동 로또 개수를 반환한다.")
void calculateAutoLottoCount(int count, int expected) {
PurchaseAmount purchaseAmount = new PurchaseAmount(14_000);
assertThat(purchaseAmount.calculateAutoLottoCount(count)).isEqualTo(expected);
}
여기에 name 인자를 지정해 출력 스타일을 원하는 데로 변경할 수 있다.
@ParameterizedTest(name = "[{index}] 수동 로또가 {0}개면, 자동 로또는 {1}개")

어떤 부분을 테스트 했는지 이제는 좀 알아보겠구만!!
여기서 name은 MessageFormat 패턴을 사용한다.
아래의 placeholder를 적절히 사용해 출력해보자!!

IntelliJ에서 @DisplayName이 실행 탭에 표시되지 않는 문제 해결
IntelliJ에서 테스트 코드를 실행시켜보면 @DisplayName이 실행탭에 표시되지 않는 문제가 발생할 수 있다.
나는 일반 @Test에서는 표시 됐지만,
다음과 같이 @Parameterized에 적용시킬 경우 표시되지 않았다. 🥲
아니 이걸 왜 로또 미션 2단계까지 와서 깨달은 걸까.. 나도 참..

찾아보니 나만의 문제는 아니었다.
Preferences > Build, Execution, Deployment > Gradle에서 Run tests using을 "IntelliJ IDEA"로 변경하면 쉽게 해결된다.


Ref.
http://jmlim.github.io/intellij/2020/03/02/intellij-junit5-display-name-did-not-show-issue/
'Backend > Java' 카테고리의 다른 글
스트림 병렬화는 주의해서 적용하자!! (0) | 2022.03.16 |
---|---|
제네릭(Generic)의 기본 개념 (0) | 2022.03.07 |
전략(Strategy) 패턴 : 여러 전략 제공 + 테스트 용이 = 일석이조 (0) | 2022.03.02 |
디폴트 메서드를 너무 믿지 말고, 인터페이스를 설계할 때는 세심한 주의를 기울여야 한다 (0) | 2022.03.01 |
생성자 대신 정적 팩터리 메서드를 고려하라 (0) | 2022.02.28 |