Eclipse 에서 static import 를 쉽게 사용하기

테스트 코드를 작성하다 보면 org.junit.Assert 클래스나 org.hamcrest.CoreMatchers 클래스의 메서드를 많이 사용하게 되는데 이게 좀 귀찮은 부분이 있다.
메서드가 여러 개라서 일일이 다 적기는 힘들다.
그래서 와일드카드를 사용하는데, Eclipse 의 Organize Imports 기능을 사용하면 와일드카드로 import 한 코드가 실제 사용된 메서드로 바뀐다. [각주:1]]

그 후 import 되지 않은 메서드를 사용할때는?

매번 이러니 귀찮다.

그래서 Template 을 사용했다.
import static org.junit.Assert.*; 라는 구문이 삽입되도록 추가했다.
그러나 매번 소스 파일 최상단으로 이동해야 되서 귀찮아서 조금 사용하다 말았다.

이 문제에 대해서 여러 사람들이 고민하고 좋은 해결책을 제시했다.
Template 을 보다 보니 이미 import CoreMatchers, Test 라는 템플릿이 있었다.
여러 가지 방법들을 조합해서 몇가지 Template 을 만들었다.

 

create test method //잘안쓰나?

@${testType:newType(org.junit.Test)}
public void test${testname}(){
    ${si1:importStatic('org.hamcrest.CoreMatchers.*')}${si2:importStatic('org.junit.Assert.*')}${cursor}
}

 

import tests

${is2:importStatic('org.junit.Assert.*')}${is3:importStatic('org.springframework.test.web.servlet.setup.MockMvcBuilders.*')}${is4:importStatic('org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*')}${is5:importStatic('org.springframework.test.web.servlet.result.MockMvcResultMatchers.*')}${is6:importStatic('org.springframework.test.web.servlet.result.MockMvcResultHandlers.*')}${is7:importStatic('org.mockito.Mockito.*')}${is8:importStatic('org.mockito.Matchers.*')}${is9:importStatic('org.assertj.core.api.Assertions.*')}${is10:importStatic('org.mockito.ArgumentCaptor.*')}

${is1:importStatic('org.hamcrest.CoreMatchers.*')}${is2:importStatic('org.junit.Assert.*')}${is3:importStatic('org.springframework.test.web.servlet.setup.MockMvcBuilders.*')}${is4:importStatic('org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*')}${is5:importStatic('org.springframework.test.web.servlet.result.MockMvcResultMatchers.*')}${is6:importStatic('org.springframework.test.web.servlet.result.MockMvcResultHandlers.*')}${is7:importStatic('org.mockito.Mockito.*')}

 

assertThat with static import

${si1:importStatic('org.assertj.core.api.Assertions.*')}assertThat(${cursor}

assertThat(${cursor}, is(${si1:importStatic('org.hamcrest.CoreMatchers.*')}${si2:importStatic('org.junit.Assert.*')}

 

when

${si1:importStatic('org.mockito.Mockito.*')}when(${cursor}

 

이제는 테스트 코드 작성에만 신경쓰자.

 

 

  1. Number of static import needed for .* 를 99에서 1로 변경하면 된다고 함. [본문으로]