작성
·
987
2
service에 이미 @Transactional을 붙어있는걸로 보이는데 왜 test코드에 또 Transactional을 붙여줘야 하는건가요?
어차피 Service에서 데이터 추가 , 삭제는 다 이루어지고 있는것 아닌가요?
답변 2
3
안녕하세요. 양태웅님
테스트는 여러번 수행해야 하는데, 기존 데이터가 계속 누적되면 다음 테스트에 영향을 줄 수 있습니다. 따라서 테스트 이후에 저장된 데이터를 모두 삭제해야 합니다.
이런 문제를 해결하기 위해 테스트에서 @Transactional을 붙여주게 되면 특별하게 데이터베이스에 저장된 결과를 커밋하지 않고 롤백합니다. 그래서 테스트를 여러번 실행해도 동일한 상황에서 테스트를 할 수 있습니다.
감사합니다.
0
네 맞습니다^^
테스트에 transactional이 없으면 테스트에서 트랜잭션 자체를 실행하지 않습니다.
transactional + @Commit를 사용하셔도 됩니다.