IntelliJ에서 정적 임포트를 하는 방법

2 min read

JUnit 테스트를 작성할 때 단언문을 자주 사용하게 됩니다. 하지만 Assertions 클래스에 속한 정적 메소드를 사용하기 위해 assertThat을 입력할 경우 자동완성 팝업이 표시되지 않아서 불편합니다. Ctrl+Space를 눌러도 No suggestions 메시지만 표시됩니다.

null

자동완성 표시하기

assertThat을 입력한 뒤 Ctrl을 누른 상태로 Space키를 두번 누르면 자동완성 항목이 표시됩니다.

null

Enter를 입력하면 Assertions.assertThat(커서) 코드로 변환됩니다.

null

커서를 다시 assertThat위로 이동한 뒤 Opt+Enter를 입력하면 add static import for... 팝업이 표시됩니다.

null

Enter를 입력하면 import static org.assertj.core.api.Assertions.assertThat 코드가 추가됩니다.

null

이 방법은 설명하기 번거로운 만큼 사용하기도 번거롭습니다.

자동완성 팝업에서 정적 임포트 실행하기

assertThat을 입력하고 Ctrl+Space+Space키를 눌러서 자동완성 팝업을 띄웁니다.

null

Assertions.assertThat(...) 항목 위에서 Opt+Enter키를 누르면 추가 팝업이 표시됩니다.

null

Import statically를 선택하면 import static org.assertj.core.api.Assertions.assertThat 코드가 입력되고, 커서의 위치가 괄호 안으로 이동합니다.

null

첫번째 방법보다는 조금 낫지만, 이 방법도 사용하기에는 번거롭습니다.

라이브 템플릿 사용하기

Preferences > Editor > Live Templates 설정에서 + 버튼을 눌러서 템플릿 그룹을 만들고, 다음과 같이 템플릿을 추가합니다.

  • Abbreviation: assertThat의 의미로 at로 지정
  • Template text: org.assertj.core.api.Assertions.assertThat($END$)
  • Applicable: Java 선택
  • Options:
    • Reformat according to style
    • Use static import if possible

null

이제 에디터에서 at만 입력하면 별도의 키를 누르지 않더라도 자동완성 팝업이 표시되고, at 템플릿을 선택할 수 있습니다.

null

템플릿 코드가 입력되면서 커서가 $END$ 위치로 이동하게 됩니다.

null

이제 답답한 느낌이 깔끔하게 사라졌습니다.

모든 정적 메소드 임포트하기

정적 메소드를 임포트하는 방식을 다음과 같이 변경할 수도 있습니다.

// 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 '*' 항목을 다음과 같이 설정합니다.

null

  • org.assertj.core.api.Assertions를 추가하고 Static 항목을 체크

위 설정을 적용한 뒤, assertThat 메소드를 임포트 하면, 개별 메소드가 아닌 전체 메소드를 임포트하게 됩니다.

null

Assertions.* 코드가 추가되면서 Assertions클래스에 속한 모든 정적 메소드에 대해 자동완성을 사용할 수 있게 되었습니다.

Packages to Use Import with '*' 설정은 코드 작성 방식을 변경합니다. 이로 인해서 동료들과 다른 코드를 작성하게 되고, 불필요한 코드 변경이 발생할 수 있으므로 주의가 필요합니다.

정리

이번 글에서는 IntelliJ의 라이브 템플릿을 사용해서 테스트 코드 작성을 편하게 하는 방법에 대해 알아보았습니다. assertThat 이외에도 자주 쓰는 메소드들을 템플릿으로 등록해놓으면, 생각이 손에서 막히는 과정 없이 코딩을 할 수 있습니다.

© 2022 Raegon Kim