JUnit 테스트를 작성할 때 단언문을 자주 사용하게 됩니다. 하지만 Assertions
클래스에 속한 정적 메소드를 사용하기 위해 assertThat
을 입력할 경우 자동완성 팝업이 표시되지 않아서 불편합니다. Ctrl+Space를 눌러도 No suggestions
메시지만 표시됩니다.
자동완성 표시하기
assertThat
을 입력한 뒤 Ctrl을 누른 상태로 Space키를 두번 누르면 자동완성 항목이 표시됩니다.
Enter를 입력하면 Assertions.assertThat(커서)
코드로 변환됩니다.
커서를 다시 assertThat
위로 이동한 뒤 Opt+Enter를 입력하면 add static import for...
팝업이 표시됩니다.
Enter를 입력하면 import static org.assertj.core.api.Assertions.assertThat
코드가 추가됩니다.
이 방법은 설명하기 번거로운 만큼 사용하기도 번거롭습니다.
자동완성 팝업에서 정적 임포트 실행하기
assertThat
을 입력하고 Ctrl+Space+Space키를 눌러서 자동완성 팝업을 띄웁니다.
Assertions.assertThat(...)
항목 위에서 Opt+Enter키를 누르면 추가 팝업이 표시됩니다.
Import statically
를 선택하면 import static org.assertj.core.api.Assertions.assertThat
코드가 입력되고, 커서의 위치가 괄호 안으로 이동합니다.
첫번째 방법보다는 조금 낫지만, 이 방법도 사용하기에는 번거롭습니다.
라이브 템플릿 사용하기
Preferences > Editor > Live Templates
설정에서 +
버튼을 눌러서 템플릿 그룹을 만들고, 다음과 같이 템플릿을 추가합니다.
- Abbreviation:
a
ssertT
hat의 의미로at
로 지정 - Template text:
org.assertj.core.api.Assertions.assertThat($END$)
- Applicable:
Java
선택 - Options:
- Reformat according to style
- Use static import if possible
이제 에디터에서 at
만 입력하면 별도의 키를 누르지 않더라도 자동완성 팝업이 표시되고, at
템플릿을 선택할 수 있습니다.
템플릿 코드가 입력되면서 커서가 $END$
위치로 이동하게 됩니다.
이제 답답한 느낌이 깔끔하게 사라졌습니다.
모든 정적 메소드 임포트하기
정적 메소드를 임포트하는 방식을 다음과 같이 변경할 수도 있습니다.
// Before
import static org.assertj.core.api.Assertions.assertThat;
// After
import static org.assertj.core.api.Assertions.*;
Preferences > Editor > Code Style > Java
설정에 있는 Packages to Use Import with '*'
항목을 다음과 같이 설정합니다.
org.assertj.core.api.Assertions
를 추가하고Static
항목을 체크
위 설정을 적용한 뒤, assertThat
메소드를 임포트 하면, 개별 메소드가 아닌 전체 메소드를 임포트하게 됩니다.
Assertions.*
코드가 추가되면서 Assertions
클래스에 속한 모든 정적 메소드에 대해 자동완성을 사용할 수 있게 되었습니다.
Packages to Use Import with '*'
설정은 코드 작성 방식을 변경합니다. 이로 인해서 동료들과 다른 코드를 작성하게 되고, 불필요한 코드 변경이 발생할 수 있으므로 주의가 필요합니다.
정리
이번 글에서는 IntelliJ의 라이브 템플릿을 사용해서 테스트 코드 작성을 편하게 하는 방법에 대해 알아보았습니다. assertThat
이외에도 자주 쓰는 메소드들을 템플릿으로 등록해놓으면, 생각이 손에서 막히는 과정 없이 코딩을 할 수 있습니다.