테스트 코드
테스트 코드를 작성하는 이유
- 코드의 동작 검증
- 유지 보수 및 리팩토링
- 기능 추가 및 확장
- 문서화
- 신뢰성 확보
import static org.assertj.core.api.Assertions.*;
Assertions 클래스가 가지고 있는 모든 Static 메서드를 가져오겠다.
도서 등록 테스트
1. 신규 도서 데이터 생성
2. save 메서드 호출해서 저장 처리
3. 저장한 데이터의 id값을 가져오고 해당 id로 db에서 조회를 한 뒤
1번에서 만든 객체의 책제목 값과 3번에서 조회한 객체의 책 제목 값이 일치하는지를 판단하여
4. 일치하면 테스트 성공 , 일치하지 않으면 테스트 실패
를 해본다.
private BookDTO newBook() {
BookDTO bookDTO = new BookDTO();
bookDTO.setBook_name("test book");
bookDTO.setBook_author("test author");
bookDTO.setBook_price(10000);
return bookDTO;
}
데이터를 넣을 메소드를 생성한다.
@Test
@Transactional
@Rollback(value = true)
@DisplayName("저장 테스트")
public void bookSaveTest() {
BookDTO bookDTO = new BookDTO(); // 테스트용 데이터 준비
Long save_id = bookService.save(bookDTO);// 저장을 위해 메서드 호출 후 id값 가져오기
// id로 조회
BookDTO findDTO = bookService.findById(save_id);
// 테스트용 데이터의 제목과 조회한 데이터의 제목이 일치하는지 확인
assertThat(bookDTO.getBook_name()).isEqualTo(findDTO.getBook_name());
}
@Test : 테스트 할 메소드
@Transactional : 메소드가 실행되면 정상적이라면 커밋 , 아니라면 롤백 처리
@Rollback : 데이터가 DB에 업로드된후 남으면 안되기에 Rollback으로 처리
@DispalyName : 이름을 "" 로 하겠다.
ㅈ
@Test
@Transactional
@Rollback(value = true)
@DisplayName("삭제 테스트")
public void bookDeleteTest() {
/*
새로운 데이터 저장
저장된 데이터의 id를 가져옴
해당 id로 삭제 처리
해당 id로 조회했을 때 null이면 삭제 테스트 성공
*/
BookDTO bookDTO =new BookDTO();
Long save_id = bookService.save(bookDTO);
bookService.delete(save_id);
assertThat(bookService.findById(save_id)).isNull();
}
// 수정 테스트
@Test
@Transactional
@Rollback(value = true)
@DisplayName("수정 테스트")
public void bookUpdateTest() {
/*
1. 새로운 데이터 저장
2. 수정용 데이터 준비 및 수정처리(제목만 변경)
3. 데이터 조회
4. 2번에서 수정한 제목과 3번에서 조회한 제목이 일치하면 수정 성공
*/
BookDTO bookDTO = new BookDTO();
Long save_id = bookService.save(bookDTO);
bookDTO.setBook_name("수정 제목");
bookDTO.setId(save_id);
bookService.update(bookDTO);
BookDTO dto = bookService.findById(save_id);
assertThat(dto.getBook_name()).isEqualTo(bookDTO.getBook_name());
}
}
'Spring > Spring boot icia 69일차' 카테고리의 다른 글
Spring boot로 member 시스템 만들기 (0) | 2023.05.31 |
---|---|
Spring boot 기본 CRUD (0) | 2023.05.31 |
Spring boot에서 Bootstrap 사용하기 (0) | 2023.05.31 |