| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 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 | 
- 정보처리기사
 - spring
 - 프로그래머스
 - 이것이자바다
 - 자바
 - 정처기필기
 - PYTHON
 - 스프링
 - 정보처리기사필기
 - CRUD구현
 - 파이선
 - springboot
 - 어노테이션
 - 정처기공부
 - 소프트웨어개발
 - 게시판만들기
 - java
 - 자바의정석
 - 소프트웨어설계
 - 게시판프로젝트
 - function
 - 정처기설명
 - CRUD
 - 게시판
 - 파이썬
 - 정처기
 - 스프링부트
 - 코딩테스트
 - 정처기예상문제
 - 자바의정석요약
 
- Today
 
- Total
 
Helmi
게시판 프로젝트 - 비즈니스 계층 ② 비즈니스 계층의 구현, 테스트 본문

com.board.service.BoardServiceTests 클래스 작성해 테스트 진행
테스트 환경의 BoardServiceTests
package com.board.service;
import static org.junit.Assert.assertNotNull;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import lombok.Setter;
import lombok.extern.log4j.Log4j;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
//Java Config
// @ContextConfiguration(classes={com.board.config.RootConfig.class})
@Log4j
public class BoardServiceTests {
	@Setter(onMethod_ = {@Autowired})
	private BoardService service;
	
	@Test
	public void testExist() {
		log.info(service);
		assertNotNull(service);
	}
}

1. 등록작업 구현, 테스트
등록 작업은 BoardServiceImple에서 파라미터로 전달되는 BoardVO 타입의 객체를 BoardMapper 통해 처리
BoardServiceImpl.java 일부
	@Override
	public void register(BoardVO board) {
    
		log.info("register..." + board);
        
		mapper.insertSelectKey(board);
	}
BoardService는 void 타입으로 설계 됨 - mapper.insertSelectKey()의 반환값인 int 사용하지 않고 있으나 필요하면 예외 처리나 void 대신 int 타입 이용해 사용 가능
mapper의 insertSelcetKey() 이용해 나중에 생성된 게시물의 번호 확인 가능, 테스트
BoardServiceTests.java 일부
	@Test
	public void testRegister() {
		
		BoardVO board = new BoardVO();
		board.setTitle("새로 작성하는 글");
		board.setContent("새로 작성하는 내용");
		board.setWriter("newbie");
		
		service.register(board);
		
		log.info("생성된 게시물 번호 :" + board.getBno());
	}

2. 목록(리스트)작업의 구현과 테스트
BoardServiceImpl 클래스에서 현재 테이블에 저장된 모든 데이터 가져오는 getList() 구현
BoardServiceImpl.java 일부
	@Override
	public List<BoardVO> getList() {
		log.info("getList...");
		return mapper.getList();
	}
com.board.service.BoardServiceTests.java 일부
@Test
public void testGetList() {
  service.getList().forEach(board->log.info(board));
 }

3. 조회 작업의 구현과 테스트
조회는 게시물의 번호가 파라미터, BoardVO의 인스턴스가 리턴 됨
BoardServiceImpl.java 일부
	@Override
	public BoardVO get(Long bno) {
		log.info("get..." + bno);
		return mapper.read(bno);
	}
com.board.service.BoardServiceTests.java 일부
@Test
public void testGet() {
 log.info(service.get(1L));
}

4. 삭제/수정 구현과 테스트
삭제/ 수정은 메서드 리턴 타입을 void로 설계할 수도 있지만 엄격하게 처리하기 위해 Boolean 타입으로 처리
com.board.service.BoardServiceImpl.java 일부
	@Override
	public boolean modify(BoardVO board) {
		log.info("modify..." + board);
		return mapper.update(board)==1;
	}
	@Override
	public boolean remove(Long bno) {
		log.info("remove..." + bno);
		return mapper.delete(bno)==1;
	}
정상적으로 수정과 삭제 이뤄지면 1이라는 값 반환되므로 '==' 연산자 이영해 true/false 처리 가능
com.board.service.BoardServiceTests.java 일부
	@Test
	public void testDelete() {
		//게시물 번호의 존재 여부 확인하고 테스트 할 것
		log.info("REMOVE RESULT : " + service.remove(2L));
	}
	
	@Test
	public void testUpdate() {
		BoardVO board = service.get(1L);
		
		if(board == null) {
			return;
		}
		
		board.setTitle("제목 수정합니다.");
		log.info("MODIFY RESULT : "+service.modify(board));
	}
testDelete() 경우 해당 게시물 존재시 true 반환하는 것 확인 가능, testUpdate() 경우 특정 게시물 먼저 조회하고, title 값을 수정 후 업뎃
'SpringBoot' 카테고리의 다른 글
| 프레젠테이션(웹)계층 CRUD 구현 -②CRUD 작성, REGISTER(등록) (0) | 2023.05.05 | 
|---|---|
| 프레젠테이션(웹)계층 CRUD 구현 -①Controller 작성 (0) | 2023.05.04 | 
| 게시판 프로젝트 - 비즈니스 계층 ①비즈니스 계층의 설정 (0) | 2023.05.02 | 
| 게시판 프로젝트 - CRUD 구현 ⑤ 영속 영역 CRUD 구현, UPDATE (0) | 2023.05.01 | 
| 게시판 프로젝트 - CRUD 구현 ④ 영속 영역 CRUD 구현, DELETE (0) | 2023.04.30 |