Search

15. delect 테스트 버그 수정 - @Sql 이용하기

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 어노테이션 추가해준다. → 책한건에도 추가
전체 테스트시 성공!

*참고