티스토리 뷰

반응형

hibernate 를 이용한 테스트 코드 작성시  막 crud 에서 rud 를 위한 데이터를 미리 집어 넣어 놓는 디비를 의미한다.

@Before 이후에 들어오기 때문에, @Before 에서는 jpa 저장을 하는 것이 옳다.

 

@Before 은 각 테스트별로 한번씩 발생하기 때문에   테스트 3개를 가진 before 어노테이션은 3번 코드를 반복하게 되니까 jpa 저장방식을 이용하는 것이 맞다.

 

@BeforeClass 의 경우는 junit5 에서는 @BeforeAll 을 한다고 하는데, initializing error 로 보아 좀더 작업을 해야 알 것 같다.

 

 

하단에 내코드를 첨부 하겠다.

 

import org.junit.Before;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.json.JacksonJsonParser;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.test.context.support.WithMockUser;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
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(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
@ActiveProfiles("test")                         //test profile-h2db 사용
@FixMethodOrder(MethodSorters.NAME_ASCENDING)   //실행 순서를 메소드 명 순서로 고정
public class UserControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @Autowired
    private UserJpaRepo userJpaRepo;

    @Autowired
    private PasswordEncoder passwordEncoder;

    private String token;


    @Before
    public void setUp() throws Exception {

        userJpaRepo.save(User.builder()
                .userId(6L)
                .role(Role.ROLE_ADMIN)
                .userEmail("uiEmail@ui.com")
                .userEmailReceiveYn(Boolean.TRUE)
                .userTypeCode(3L)
                .registerUserId(3L)
                .changeUserId(3L)
                .name("의정부인")
                .password(passwordEncoder
                        .encode("uiPassword"))
                .zipCode("312")
                .roadNameAddress("의정부 부대찌개로")
                .lotNumberAddress("32번지")
                .detailAddress("감나무 골목길")
                .phoneNumber("0105465465")
                .mobilePhoneNumber("6565454")
                .userSid("uiSid")
                .companyName("의정부 오뎅식장")
                .presidentName("오뎅아줌마")
                .companyPhoneNumber("01055454")
                .companyRegistrationNumber("0105465465")
                .companyAddress("오뎅이기가막혀")
                .build());
        MultiValueMap<String, String> paramsLogin = new LinkedMultiValueMap<>();
        paramsLogin.add("userSid", "uiSid");
        paramsLogin.add("password", "uiPassword");

        MvcResult result = mockMvc.perform(post("/v1/login").params(paramsLogin))
                .andDo(print())
                .andExpect(status().isOk())
                .andExpect(jsonPath("$.success").value(true))
                .andExpect(jsonPath("$.code").value(0))
                .andExpect(jsonPath("$.msg").exists())
                .andExpect(jsonPath("$.data").exists())
                .andReturn();

        String resultString = result.getResponse().getContentAsString();
        JacksonJsonParser jsonParser = new JacksonJsonParser();
        token = jsonParser.parseMap(resultString).get("data").toString();
    }


    @Test // user 1개 찾기
    @WithMockUser(username = "mockUser", roles = {"ADMIN"})
    public void findUser() throws Exception {
        mockMvc.perform(MockMvcRequestBuilders
                .get("/v1/user/4")
                .header("X-AUTH-TOKEN", token)
        )
                .andDo(print())
                .andExpect(status().isOk());
    }


    @Test // user 1개 찾기
    public void checkCompanyRegistrationNumber() throws Exception {
        MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
        mockMvc.perform(MockMvcRequestBuilders
                .get("/v1/user/check/company-register-number/?company-register-number=015654654654").header("X-AUTH-TOKEN", token)
                .params(params))
                .andDo(print())
                .andExpect(status().isOk());
    }




    @Test // user 1개 찾기
    public void checkUserSid() throws Exception {
        MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
        mockMvc.perform(MockMvcRequestBuilders
                .get("/v1/user/check/sid/testSid") .header("X-AUTH-TOKEN", token)
                .params(params))
                .andDo(print())
                .andExpect(status().isOk());
    }

    @Test // 관리자가 user list 확인
    @WithMockUser(username = "mockUser", roles = {"ADMIN"})
    public void findAllUser() throws Exception {
        mockMvc.perform(MockMvcRequestBuilders
                .get("/v1/users")
                .header("X-AUTH-TOKEN", token))
                .andDo(print())
                .andExpect(status().isOk());

    }

    @Test // user create
    @WithMockUser(username = "mockUser", roles = {"ADMIN"})
    public void save() throws Exception {
        final MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
        params.add("userSid", "saveSid");
        params.add("userEmail", "saveSidTest@test.com");
        params.add("password", "saveSidPassword");
        params.add("name", "김병만");
        params.add("role", "ROLE_USER");
        params.add("mobilePhoneNumber", "01046054000");
        params.add("companyName", "test 아마존 회사");
        params.add("presidentName", "test 아마존 company 대표");
        params.add("companyRegistrationNumber", "010043000");
        params.add("userEmailReceiveYn", "True");
        mockMvc.perform(MockMvcRequestBuilders.post("/v1/user").header("X-AUTH-TOKEN", token)
                .params(params)).andExpect(status().isOk());
    }

    @Test // user modify
    public void modify() throws Exception {
        final MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
        params.add("userSid", "userSidModify");
        params.add("userEmail", "userSidModifyEmail@test.com");
        params.add("password", "password");
        params.add("name", "김서현");
        params.add("role", "ROLE_USER");
        params.add("mobilePhoneNumber", "013420000");
        params.add("companyName", "test 쿠팡 회사");
        params.add("presidentName", "test 쿠팡 company 대표");
        params.add("companyRegistrationNumber", "01000243000");
        params.add("userEmailReceiveYn", "True");

        mockMvc.perform(MockMvcRequestBuilders
                .put("/v1/user/2")
                .header("X-AUTH-TOKEN", token)
                .params(params))
                .andDo(print())
                .andExpect(status().isOk());

    }

    @Test // user delete
    public void delete() throws Exception {
        mockMvc.perform(MockMvcRequestBuilders
                .delete("/v1/user/3")
                .header("X-AUTH-TOKEN", token))
                .andDo(print())
                .andExpect(status().isOk());

    }


}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

참고 링크: beomseok95.tistory.com/302

 

@BeforeClass, @AfterClass ,@Before,@After 순서 알아보기

@BeforeClass, @AfterClass ,@Before,@After 순서 알아보기 Junit에 @BeforeClass, @AfterClass ,@Before,@After 어노테이션이 있습니다. 이전 이후..? 뭐지 어떻게 호출되는건지 알아보도록 하겠습니다. Example..

beomseok95.tistory.com

 

반응형

'스프링, 자바' 카테고리의 다른 글

css, js import 안될때  (0) 2020.10.14
패스트캠퍼스 자바 인강 챌린지 참여 후기  (0) 2020.10.12
Lombok  (0) 2020.10.04
스프링 도큐먼트  (0) 2020.10.03
스프링 캐쉬  (0) 2020.10.03
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
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
글 보관함