본문 바로가기
✅ 테스트

IntelliJ의 Code&Live Templates 활용하여 생산성 높이기! 테스트코드 작성시간 줄이고 아직 구현하지 않은 메서드 예외로 확인하기

by kukim 2022. 3. 10.

Live Template

Live Templates

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. 끝

우측 +버튼 누르기
Abbreviation : 단축어, Description : 단축어 설명
설정하면 아래와 같이 나온다
원하는 Template text를 작성하고 Edit varibales를 눌러 변수의 기본 값을 설정해주자 추가로 $END$는 탭키를 눌렀을 때 최종적인 커서 위치이다.

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는 단축키 또는 자체 기능으로 생성하는 코드의 템플릿이다. 예를 들어 구현되지 않은 메서드에서 빨간줄이 그어져있는 상태에서 ⌥ + 엔터 (맥 기준) 눌러 메서드 생성할 때 자동으로 폼이 만들어지고 탭키를 눌러 넘기다 보면 리턴 타입이 자동 완성되는 경우가 있다.

 

hello.test() 메서드가 없을 때
옵션 + 엔터를 눌러 자동으로 생성할 수 있다.

자동으로 메서드 생성 시 항상 예외 던지도록 만들기

(아래 예는 백명석님의 atdd by example 유튜브 영상 11분 54초 에서 아이디어를 얻었다.)

TDD로 테스트 코드 작성 시 메서드를 자동 완성으로 만들 때 아직 구현하지 않고 넘어가기도 한다. 그때 return 타입이 null이나 기본 타입의 기본값(int의 경우 0)으로 남는 경우 구현하지 않았음에도 모르고 넘어가 문제가 될 수 있기 때문에 예외를 던져주는 것으로 바꾸었다.

이때 test 메서드의 타입이 void라 code template 설정하지 않고 탭키를 눌러 넘어가면 return null; 이 되겠지만 예외 던지도록 바꾸어 구현했는지 안했는지 확인한다.

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

IntelliJ IDEA. Write Code Faster Using Live Templates

백명석님의 atdd by example 유튜브 영상 11분 54초

댓글