Java Unit Test 교육 내용 정리 (3)

2019. 12. 5. 00:27프로그래밍 언어/Java

Java Unit Test 교육

2019. 12. 4 (목) 13:30 ~ 17:30
남서울센터 6층 레츠런파크

수업자료
https://github.com/madosa/lecture-junit
lecture-junit/Java-Spring Unit Test.md 파일 확인


자바 테스트 자동화 관련 자료
https://www.slideshare.net/gyumee/ss-90206560

 


III. 테스트 코드 작성

1. 디렉토리 및 파일 생성

src 폴더 아래에

test (Directory)

  ㄴjava (Test Sources Root)

      ㄴcom.interpark.lecture.junit.member (Package)

          ㄴMemberInitegrationTest.java (Java Class)

위와 같이 만듭니다.

 

java (Test Sources Root)는 일반 Directory로 생성 후

[java 폴더 위에서 오른쪽 버튼] - [Mark Directory as] - [Test Sources Root]를 클릭하면 변경됩니다.

 

 

2. Annotation

껍데기만 있는 MemberIntegrationTest.java 파일에서

클래스 위에 필요한 어노테이션을 달아줍니다.

(자세한 설명은 수업자료를 참고)

 

 

3. 테스트 코드 작성

MemberController.java를 참고하여 테스트 코드를 작성합니다.

getMember, createMember, modifyMember, removeMember를 테스트하기 위해서

 

MemberIntegrationTest.java 파일에

testGetMembers, testGetMember, testCreateMember, testModifyMember, testRemoveExhibition

라는 이름으로 테스트 메소드를 만듭니다.

package com.interpark.lecture.junit.member;

import com.interpark.lecture.junit.LectureJunitApplication;
import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.TestPropertySource;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultActions;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.context.WebApplicationContext;

import java.util.Collections;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@RunWith(SpringJUnit4ClassRunner.class)
@Transactional
@Rollback(true)
@ActiveProfiles("local")
@TestPropertySource("classpath:application-local.properties")
@ContextConfiguration(classes = LectureJunitApplication.class)
@WebAppConfiguration
public class MemberIntegrationTest {

    @Autowired
    private WebApplicationContext webApplicationContext;

    private MockMvc mockMvc;

    private final MediaType REST_API_MEDIA_TYPE =
            new MediaType(MediaType.APPLICATION_JSON, Collections.singletonMap("charset", "UTF-8"));

    @Before
    public void setUp() throws Exception {
        mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
    }

    @After
    public void tearDown() throws Exception {

    }

    @Test
    public void testGetMembers() throws Exception {
        ResultActions resultActions =
                mockMvc.perform(get("/lecture-junit/v1/members")
                        .accept(REST_API_MEDIA_TYPE));
        resultActions.andDo(print())
                .andExpect(status().isNotFound())
                .andExpect(jsonPath("$.response.body.docs.error_code").value("CMN0N03-404"));
    }

    @Test
    public void testGetMember() throws Exception {

    }

    @Ignore
    @Test
    public void testCreateMember() throws Exception {

    }

    @Ignore
    @Test
    public void testModifyMember() throws Exception {

    }

    @Ignore
    @Test
    public void testRemoveExhibition() throws Exception {

    }

}

 


 

관련 포스트

Java Unit Test 교육 내용 정리 (1)

Java Unit Test 교육 내용 정리 (2)

Java Unit Test 교육 내용 정리 (3)

 

참고

tech-wiki : 공통 라이브러리 개발