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

Spring) 게시판 만들기 두 번째 단추 - @Test DAO, Service 작성 후 @Test

by 휴일이 2022. 11. 18.

오늘은 저번에 만든 Dao를 테스트하고

Service를 만들고, Test까지 해볼 것이다

 

 

 

먼저

@Test Dao

package com.holiday.hi.dao;

import com.holiday.hi.domain.MemberDto;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;

import static org.junit.Assert.*;

@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "file:src/main/webapp/WEB-INF/spring/**/*.xml"})
public class MemberDaoImplTest {

    @Autowired
    private MemberDao memberDao;
    @Autowired
    private SqlSession session;

    @Test
    public void select() throws Exception {
        memberDao.deleteAll();
        MemberDto memberDto = new MemberDto("asdf","1234","휴일","aaa@aaa.com");
        System.out.println("memberDto = " + memberDto);
        memberDao.insert(memberDto);
        MemberDto dto = memberDao.select("asdf");
        System.out.println("dto = " + dto);
        assertTrue(dto!=null);
    }

    @Test
    public void insert() throws Exception {
        memberDao.deleteAll();
        MemberDto memberDto = new MemberDto("asdf","1234","휴일","aaa@aaa.com");
        int num = memberDao.insert(memberDto);
        assertTrue(num==1);
    }

    @Test
    public void update() throws Exception {
        memberDao.deleteAll();
        MemberDto memberDto = new MemberDto("asdf","1234","휴일","aaa@aaa.com");
        int num = memberDao.insert(memberDto);
        
        assertTrue(num==1);
        memberDto.setPwd("6666");
        memberDto.setName("키키키");
        num = memberDao.update(memberDto);
        assertTrue(num==1);
        
        MemberDto m = memberDao.select("asdf");
        System.out.println("m = " + m);
        System.out.println("memberDto = " + memberDto);
    }

    @Test
    public void delete() throws Exception {
        memberDao.deleteAll();
        MemberDto memberDto = new MemberDto("asdf","1234","휴일","aaa@aaa.com");
        int num = memberDao.insert(memberDto);
        assertTrue(num==1);
        
        num = memberDao.delete("asdf");
        System.out.println("num = " + num);
        assertTrue(num==1);
    }

    @Test
    public void count() throws Exception {
        memberDao.deleteAll();
        MemberDto memberDto = new MemberDto("asdf","1234","휴일","aaa@aaa.com");
        memberDao.insert(memberDto);
        int num = memberDao.count();
        System.out.println("num = " + num);

        memberDao.deleteAll();
        assertTrue(memberDao.count()==0);
    }

    @Test
    public void deleteAll() throws Exception {
        System.out.println("@Test session = " + session);
        memberDao.deleteAll();
    }
}

 

 

조금 난감한 일이 있었다

deleteAll이 테스트할 때 많이 쓰이니까

deleteAll부터 테스트를 했는데

deleteAll의 반환타입을 int로 했는데, 반환값이 계속 0으로 뜨는 것이었다 ㅠㅠ

 

스프링을 사용하지 않을 때 배운 것이

excuteUpdate() 를 사용하면 반환값이 int이고

성공하면 1, 아니라면 0을 반환하는 것으로 알고 있었는데

계속 0이 뜨는 것이었다

 

그래서

1) SQL문 돌아가는지 다시 확인

2) SQL과 관련된 경로 다시 확인

3) 혹시 수정하다가 DB연결 이상이 생겼나 싶어서 Dao를 다시 Test (잘 돌아감)

.

.

.

 

어이없어서

혹시 다른 건 되나 싶어서

insert를 테스트해보니 테스트가 성공!!!

왜지...? 싶어서

insert를 하고 deleteAll을 돌린 후

MySQL에서 select * from board 를 해보니 깨끗하게 사라져있는 것이다

deleteAll은 실행이 잘 되어도 반환값이 0이었던 거 같다...

하...이거땜에 몇시간을 날렸는데 ㅜㅡ

 

 

뭐 어쨌든 그 후로 테스트는 무난하게 다 성공했다!!

 

 

 

그래서 이번엔 Service 클래스를 만들었다

 

package com.holiday.hi.service;

import com.holiday.hi.domain.BoardDto;

import java.util.List;

public interface BoardService {
    BoardDto read(Integer no) throws Exception;
    List<BoardDto> readAll() throws Exception;
    int write (BoardDto dto) throws Exception;
    int remove (String id, Integer no) throws Exception;
    int modify (BoardDto dto) throws Exception;
    int removeAll () throws Exception;
    int getCount () throws Exception;


}

 

 

DAO에 맞춰서 작성했다...ㅎㅎ;

 

 

그리고 바로 테스트를 돌려보았다

 

package com.holiday.hi.service;

import com.holiday.hi.dao.BoardDao;
import com.holiday.hi.domain.BoardDto;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;

import java.util.List;
import java.util.Map;

import static org.junit.Assert.*;

@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "file:src/main/webapp/WEB-INF/spring/**/*.xml"})
public class BoardServiceImplTest {

    @Autowired
    BoardService service;

    @Test
    public void read() throws Exception {
        service.removeAll();
        BoardDto dto = new BoardDto("사랑해","자기야","내꺼");
        assertTrue(service.write(dto)==1);

        assertTrue(service.read(33)!=null);
    }

    @Test
    public void readAll() throws Exception {
        BoardDto dto = new BoardDto("사랑해","자기야","내꺼");
        int i = service.write(dto);
        System.out.println("i = " + i);
        assertTrue(i==1);

        service.removeAll();
        List<BoardDto> list = service.readAll();
        assertTrue(list.size()==0);
    }

    @Test
    public void write() throws Exception {
        BoardDto dto = new BoardDto("사랑해","자기야","내꺼");
        int i = service.write(dto);
        System.out.println("i = " + i);
        assertTrue(i==1);
    }

    @Test
    public void remove() throws Exception {
        BoardDto dto = new BoardDto("사랑해","자기야","내꺼");
        int i = service.write(dto);
        System.out.println("i = " + i);
        assertTrue(i==1);

        assertTrue(service.remove("자기야", 36)==1);
    }

    @Test
    public void modify() throws Exception {
        BoardDto dto = new BoardDto("사랑해","자기야","내꺼");
        assertTrue(service.write(dto)==1);

        dto = service.read(37);
        assertTrue(service.modify(dto)==1);

    }

    @Test
    public void removeAll() throws Exception {
        service.removeAll();
    }

    @Test
    public void getCount() throws Exception {
        BoardDto dto = new BoardDto("사랑해","자기야","내꺼");
        int i = service.write(dto);
        System.out.println("i = " + i);
        assertTrue(i==1);

        service.removeAll();
        List<BoardDto> list = service.readAll();
        assertTrue(list.size()==0);

        assertTrue(service.getCount()==0);
    }
}

 

성공쓰~~!

 

 

이제 컨트롤러를 만들어야겠다!

728x90