Live Template
Live Templates는 영상에서 보듯이 public static void main 나 System.out.println() 등 자주 반복되는 코드를 단축어(psvm, sout 등)로 사용할 수 있는 유용한 기능이다. (이미 많은 분들이 알고 있지만)
BDD, DCI 패턴의 계층형 테스트 + Live Templates
기계인간 이종립님 Junit5로 계층 구조의 테스트 코드 작성하기의 글을 보고 테스트코드에 DCI 패턴을 적용하고 있지만 코드길이가 상당해 불편했지만 Live Templates를 추가하여 약 10초 정도의 시간을 줄일 수 있다. (테스트 1000개 짜면 10000초 정도를 줄일 수 있다.. 하지만 설정하고 글쓰는데 1시간 걸렸다 누군가에게 도움이 되길 바라며...)
Live Templates 커스텀 방법
1. Perference - Live Templates - Java - 우측 +버튼
2. Live Templates 문법에 맞게 커스텀
3. 끝
DCI 패턴의 Live Templates 예)
@Nested
@DisplayName("$TESTNAME_D$")
class Describe_$METHOD_NAME_D$ {
@Nested
@DisplayName("$TESTNAME_C$")
class Context_with_$METHOD_NAME_C$ {
@Test
@DisplayName("$TESTNAME_I$")
void It_$METHOD_NAME_I$() {
$END$
}
}
}
Code Template
IntelliJ에서 Code Template는 단축키 또는 자체 기능으로 생성하는 코드의 템플릿이다. 예를 들어 구현되지 않은 메서드에서 빨간줄이 그어져있는 상태에서 ⌥ + 엔터 (맥 기준) 눌러 메서드 생성할 때 자동으로 폼이 만들어지고 탭키를 눌러 넘기다 보면 리턴 타입이 자동 완성되는 경우가 있다.
자동으로 메서드 생성 시 항상 예외 던지도록 만들기
(아래 예는 백명석님의 atdd by example 유튜브 영상 11분 54초 에서 아이디어를 얻었다.)
TDD로 테스트 코드 작성 시 메서드를 자동 완성으로 만들 때 아직 구현하지 않고 넘어가기도 한다. 그때 return 타입이 null이나 기본 타입의 기본값(int의 경우 0)으로 남는 경우 구현하지 않았음에도 모르고 넘어가 문제가 될 수 있기 때문에 예외를 던져주는 것으로 바꾸었다.
Code Template 커스텀 방법
Preference - File and code Templates - Code - 원하는 곳 수정
아래는 'New Method Body', 'Implemented Method Body' 내용을 첫 줄을 주석 처리하고 예외 던지도록 변경하였다.
###if ( $RETURN_TYPE != "void" )return $DEFAULT_RETURN_VALUE;#end
throw new UnsupportedOperationException("${SIMPLE_CLASS_NAME}#${METHOD_NAME} 아직 구현하지 않음 !!");
⛓Reference
'✅ 테스트' 카테고리의 다른 글
JUnit5에서 검증문이 중간에 실패해도 멈추지 않고 검증문 모두 실행하기(AssertAll, AssertJ, SoftAssertions) (0) | 2022.06.02 |
---|---|
단위 테스트란 무엇일까? 런던파와 고전파의 차이점 🆚 (2) | 2022.03.19 |
private 메서드도 테스트를 해야 할까? (private 메서드 테스트 하고 싶을 때...) ✅ 👃 (7) | 2022.02.16 |
Design by Contract(계약에 의한 설계)와 테스트 코드 그리고 예제📝 (2) | 2022.02.07 |
단위 테스트 구조 (AAA 패턴, 테스트 픽스터, 명명법) (0) | 2022.01.04 |
댓글