반응형

SpringBoot를 이용해 개발을 하며 test 케이스를 작성하고 실행을 하였다

 

그리고 각 테스트 케이스 마다 영향을 주지 않기 위해

 

@After 어노테이션으로 각 repository.deleteAll() 메소드를 실행하도록 하였다.

 

그런데 ?? 

 

org.hibernate.exception.ConstraintViolationException: could not execute statement

이런 에러가 발생하였다.

 

https://stackoverflow.com/questions/49595852/deleteall-in-repository-randomly-causes-constraintviolationexception

 

deleteAll() in Repository randomly causes ConstraintViolationException

I have tests that do CRUD operations on an API. Before each test the test data in the API gets recreated. Meaning deleting all data in the database and inserting the test data again. public void

stackoverflow.com

여기에 어느정도 잘 나와있는 것 같다.

 

Hibernate를 사용하여 테스트 하는 환경에서 나타나는 일반적인 에러란다~

 

원인은 코드의 쿼리가 순차적으로 즉시 수행되는 것이 아니기 때문이다.

 

그래서 deleteAll() 대신 deleteAllInBatch()를 사용해서 해결했다.

 

deleteAll()은 delete를 여러번 실행하며 모두 삭제하는 것이고, deleteAllInBatch()는 한번의 실행으로 전부를 삭제하는 것이다.

반응형

+ Recent posts