티스토리 뷰

Programming & Solution/Java

[Junit] 템플릿

GOD동하 2021. 3. 10. 09:28

템플릿 추가 (IntelliJ)

1. File Template 추가

아래 그림과 같이 File → Settings → Editor → File and Code Templates 에서 Files 탭의 + 를 하여 템플릿 추가

Name : TestTemplate , Extenstion : Java

 

[TestTemplate]

package ${PACKAGE_NAME};

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.*;
import static org.assertj.core.api.Assertions.*;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
#parse("File Header.java")

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class ${NAME} {
   @Autowired
   MockMvc mockMvc;
}

고럼 테스트 코드 만들 때 아래 파일 클릭해서 슝~

 

2. Live Template 추가

아래 그림과 같이 File → Settings → Editor → Live Templates 에서 Files 탭의 + 를 하여 Live Template 추가

아래 change 눌러서 JAVA 파일에서 사용되도록 변경

추가하면 testfunc만 쓰면 아래와 같이 template 쫙~

아래 method명과 description만 작성하면 됨

 

규칙

1. 테스트 설명

  • TestDescription 어노테이션으로 어떤 테스트인지 설명을 추가한다.
  • 테스트 시 Given - When - Then 순서로 테스트를 작성한다.

2. Mvc Test 

  • MVC Test 시 MockMvc 객체를 이용한다.
  • Happy 케이스와 Bad (Exception) 케이스를 테스트한다.

3. Naming

  • {Method_CASE} 으로 작성하며 예상되는 케이스를 설명한다.
  • Example 

    @Test
    public void createUser_whenNoUser()

Service Test 

AssertJ에서 제공하는 assertThat 을 이용해 테스트한다.

@Test
public void getUsers_happy() {
	//Given
    String userName = "dong";
    //When
    User user = userService.getUserByName(user);
    //Then
    assertThat(userName).isEqualTo(user.getName());
}

 

Controller Test 

MockMvc 를 이용해 요청에 대한 응답을 테스트한다.

@Autowired
MockMvc mockMvc;

@Test
public void createUser_happy() throws Exception {
 //Given
 long id = 1;
 String userId = "user";
 String password = "1234";
 String nickNm = "Nick";
 List<Role> roles = Arrays.asList(new Role(id, "TEST_ROLE"));

 //When
 User user = User.builder()
 .userId("test1")
 .password("test1")
 .nickNm("테스트")
 .roles(roles)
 .build();


 mockMvc.perform(post("/user")
 .contentType(MediaType.APPLICATION_JSON_UTF8)
 .content(JsonUtil.conv(user)))
 //Then
 .andDo(print())
 .andExpect(status().isOk());
}

Exception Test

Test expected 어노테이션으로 Exception을 테스트한다.

@Test(expected = UsernameNotFoundException.class)
public void getUserByName_userNofFound() {
 String name = "dondon";
 User notExistedUser = userService.getUserByName(name);
}



[참고] TestDescription

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface TestDescription {
 String value();
}

TestDescription 어노테이션을 추가한 후 아래와 같이 사용이 가능하다.

@Test
@TestDescription("200 - 정상적으로 유저 생성했을 때")
public void createUser_happy() {}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함