본문 바로가기
카테고리 없음

spring boot TEST

by improve 2024. 3. 18.

spring boot 프로젝트 생성한다.

 

package형식을 이렇게 짯다

 

MemberService,MemberController,MemberRepository 에 쉬프트 + 커멘드 + 4 로 TEST 형식을 만들어 준다.

 

TEST 형식은 말그대로 테스트를 하는것입니다.

테스트 코드를 만드는 이유 

-> github에 소스를 올리면 소스 자동 다운로드 된다.

빌드 자동으로 해주는데 테스트코드에 있는 내용이 틀리면,, 실제 서버에 올리지마라. 

젠킨스(프로그램, 도구)

 

 

배포할..  

 

⚫️  MemberRepository.TEST

package com.mh.restapi05.member;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

import static org.junit.jupiter.api.Assertions.*;

@SpringBootTest

class MemberRepositoryTest {

    @Autowired
    private MemberRepository memberRepository;

    @BeforeEach // 모든 과정 전에 실행
    public void init(){
        System.out.println("delete all");
        memberRepository.deleteAll();
    }
    @Test
    public void saveTest() {
        Member member = Member.builder()
                .username("user")
                .password("1234")
                .email("aaa@naver.com")
                .build();
        Member dbmember = memberRepository.save(member);

        // 맞는지 확인하는 작업
        assertEquals("user",dbmember.getUsername());
        assertEquals("1234", dbmember.getPassword());
    }

    @Test
    void slectTest() {
        List<Member> list = memberRepository.findAll();
        for (Member member : list){
            System.out.println(member);
        }

    }
}

 

asserEquals 는 앞의 문자와 입력한 문자가 같은지 확인하는 역할을한다.

 

 

⚫️ MemberService.TEST

package com.mh.restapi05.member;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import static org.junit.jupiter.api.Assertions.*;

@SpringBootTest
class MemberServiceTest {

    @Autowired
    private MemberService memberService;
    @Autowired
    private MemberRepository memberRepository;

    @BeforeEach
    void setUp(){
//        Member member = Member.builder()
//                .username("user1")
//                .password("1234")
//                .email("aaa@naver.com")
//                .build();
//        memberService.save(member);
    }
    @Test
    void save() {
        Member member = Member.builder()
                .username("user1")
                .password("1234")
                .email("aaa@naver.com")
                .build();
        memberService.save(member);

    }
}

 

 

email은 unique = true 이기 때문에 중복으로 들어가면 안된다.  setUp 이랑 save 를 같이 실행하게 되면 중복오류가 나게 된다.

 

 

⚫️MemberControler.TEST

package com.mh.restapi05.member;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultActions;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;

import static org.junit.jupiter.api.Assertions.*;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@SpringBootTest
@AutoConfigureMockMvc // MocMvc를 사용하기 위한 어노테이션
class MemberControllerTest {

    @Autowired
    MockMvc mockMvc; // get/post 자동으로 사용

    @Autowired
    MemberController memberController;

    @Test
    void member() throws Exception {
        //when
        ResultActions resultActions = mockMvc.perform(MockMvcRequestBuilders.get("/member"));

        resultActions
                .andDo(print())
                .andExpect(status().isOk())
                .andExpect(content().string("member"));
    }

    @Test
    void save() {
    }
}

 

오류문을 잡아준다. (200번으로)