delete 전체 테스트시 오류 잡기
저번에 delete 삭제하기 함수 이후에 전체테스트로 진행하면
1번 id값이 존재하지않아서 오류가 나는 경우도 있는데
Junit 테스트
1.
테스트 메서드가 3개가 있을때 (순서 보장이 안됨) → 순서를 줄려면 @Order() 어노테이션을 써야함
2.
테스트 메서드가 하나 실행 후 종료되면 데이터가 초기화된다
(@DataJpaTest안에 @Transactional()이 초기화 시킴)
(1) 1건 insert
(2) 2건 insert
→ 트랜잭션 종료 → 데이터 초기화
*** primary key auto_increment 값이 초기화가 안됨 → 그래서 (1)에서 1건이 아니라 3건이 나온다..
책삭제 함수위에 @Sql어노테이션을 추가
@Sql("classpath:db/tableInit.sql")
@Test
public void 책삭제_test() {
.
.
.
.
}
Java
복사
classpath는 리소스 폴더를 말하는거고
sql이 책삭제 함수가 실행하기 직전에만 실행되게 한다.
resources → db 폴더 생성 → tableInit.sql 생성
drop table if exists Book;
create table Book (
id bigint generated by default as identity,
author varchar(20) not null,
title varchar(50) not null,
primary key(id)
);
SQL
복사
책삭제말고도 id를 찾는 모든 테스트 함수에는 sql 어노테이션 추가해준다. → 책한건에도 추가
전체 테스트시 성공!