잡동사니

[전자정부프레임워크] JUnit을 활용한 테스크 케이스 구현 본문

IT/Java

[전자정부프레임워크] JUnit을 활용한 테스크 케이스 구현

yeTi 2016. 6. 22. 17:43

안녕하세요. yeTi입니다.

오늘은 전자정부프레임워크 환경에서 JUnit을 활용하여 테스트 케이스를 만드는 방법에 대해서 알아보겠습니다.



사용환경

전자정부프레임워크 : 3.5.1


  1. pom.xml에 다음 사항 추가
    1. <!-- For Mock Test -->
      <dependency>
          <groupId>com.jayway.jsonpath</groupId>
          <artifactId>json-path-assert</artifactId>
          <version>0.8.1</version>
          <scope>test</scope>
      </dependency>
      <dependency>
          <groupId>org.mockito</groupId>
          <artifactId>mockito-core</artifactId>
          <version>1.9.5</version>
          <scope>test</scope>
      </dependency>
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-test</artifactId>
          <version>3.2.3.RELEASE</version>
          <scope>test</scope>
      </dependency>
  2. 테스트 케이스를 만들고자 하는 클래스에서 우클릭 -> New -> JUnit Test Case 선택
  3. Next -> 테스트 케이스를 만들고자하는 함수를 선택 후 Finish
  4. Test 클래스 상단에 다음 사항 추가
    1. import static org.junit.Assert.*;
      import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
      import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
  5. webAppContextSetup을 활용하기 위해 클래스에 어노테이션 추가
    1. @RunWith(SpringJUnit4ClassRunner.class)
      @ContextConfiguration(locations = {"file:src/main/webapp/WEB-INF/mvc-config.xml"
              , "file:src/main/resources/spring/context-common.xml"
              , "file:src/main/resources/spring/context-mapper.xml"
              , "file:src/main/resources/spring/context-datasource.xml"
              })
      @WebAppConfiguration
      public class ControllerTest {
         
          @Autowired
          private WebApplicationContext wac;
         
          @InjectMocks
          private Controller Controller;
       
          private MockMvc mockMvc;
         
          @Before
          public void setup() {
              // Process mock annotations
              MockitoAnnotations.initMocks(this);
             
              this.mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
          }
  6. 다음과 같이 테스크 케이스 코드 입력
    1. this.mockMvc.perform(
              post(url)
              .param("param1", "value1")
              .param("param2", "value2")
      ).andExpect(
              status().isOk()
      ).andExpect(
              jsonPath("$.data[0].max_num_user").exists()
      ).andExpect(
              jsonPath("$.data[0].caution").exists()
      );
  7. 멀티파트는 다음과 같이 처리
    1. File file = new File("c:/TEMP/sample.jpg");
      FileInputStream fileInputStream = new FileInputStream(file);
      MockMultipartFile mockMultipartFile = new MockMultipartFile("files", file.getName(), "multipart/form-data", fileInputStream);
      this.mockMvc.perform(
          MockMvcRequestBuilders.fileUpload(url)
          .file(mockMultipartFile)
          .param("param1", "value1")

      );
  8. 테스트 수행
    1. 테스트 케이스 클래스(Ex :: ControllerTest) 우큭릭 -> Run As -> JUnit Test


Comments