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