KoreaIt Academy/Spring Boot

[Spring Boot] 단위 테스트에서 Controller와 MyBatis를 테스트 하는 문법

hongeeii 2021. 10. 8.
728x90
반응형

Controller 테스트

먼저 위와 같이 test폴더에 ControllerTest.java 파일을 만들어 줍니다.

package com.example.board.controller;

import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MockMvcBuilder;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;

@ExtendWith(SpringExtension.class)
@SpringBootTest
@Slf4j
// 컨트롤러를 테스트하는 문법
public class ControllerTest {

//    가짜 MVC
//    마치 브라우저에서 URL을 요청한 것처럼 환경을 만들어 준다.
    private MockMvc mockMvc;

//     요청을 처리해 주는 WebApplicationContext를 불러온다.
    @Autowired
    private WebApplicationContext webApplicationContext;

//    하위의 모든 테스트가 실행 전에 실행되도록 한다.
    @BeforeEach
    public void setUp(){
//        가짜 MVC에 WebApplicationContext를 전달한 후 환경을 생성한다.
        mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
    }

    @Test
    public void testList() throws Exception{
        log.info(mockMvc.perform(MockMvcRequestBuilders.get("/board/list"))
                .andReturn().getModelAndView().getModelMap().toString()); //get방식 doGet ..
    }

}

 

 

MyBatis 테스트

먼저 위와 같이 test폴더에 MyBatisConfigTest.java 파일을 만들어 줍니다.

package com.example.board.mybatis;

import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import javax.sql.DataSource;
import java.sql.Connection;

@SpringBootTest
@Slf4j
public class MyBatisConfigTest {

    @Autowired
    private SqlSessionFactory sqlSessionFactory;

    @Autowired
    private DataSource dataSource;

    @Test
    public void testDataSource(){
        try
                (
                        Connection conn = dataSource.getConnection();
                )
        {
            log.info("-------------------------------------");
            log.info("datasource connection : " + conn);
            log.info("-------------------------------------");
        } catch (Exception e){
            e.printStackTrace();
        }
    }

    @Test
    public void testSqlSession(){
        log.info("-------------------------------------------");
        log.info("sql session factory : " + sqlSessionFactory);
        log.info("-------------------------------------------");

        try
                (
                        SqlSession sqlSession = sqlSessionFactory.openSession(true);
                        Connection conn = sqlSession.getConnection();
                )
        {
            log.info("—————————————————————");
            log.info("sql session connection : " + conn);
            log.info("—————————————————————");
        } catch (Exception e) {
            e.printStackTrace();
        }

    }


}
728x90
반응형

추천 글