Spring과 DB를 연동한 Test 진행 중, test에는 오류가 없는데
데이터가 저장되지 않는 현상을 마추졌다..!
알고보니 @Transactional 어노테이션을 추가했기 때문이였다.
그렇다면 @Transactional은 무엇인가?
일렬의 작업 과정을 하나의 단위로 묶어 처리하도록 해주는 역할
모든 작업이 성공적으로 이루어졌을 경우 결과를 저장하고,
일부 작업에서 오류가 발생했을 경우, 이전의 성공 결과를 포함하여 이전으로 되돌리는 작업을 해준다.
그렇다면 나의 경우는 왜 Test가 성공했음에도 결과가 저장되지 않고 rollback 되었을까..?
Test case에 이 어노테이션이 있으면, 테스트 시작 전에 transaction을 시작하고,
테스트 후에는 항상 롤백한다.
이유는 이렇게 해야 DB에 데이터가 남지 않고, 다음 테스트의 영향을 주지 않기 때문이다.
※ Test에 붙었을 경우에만 rollback을 하고, 그 외 service나 이런데 붙게 되면 rollback 하지 않는다!