>  Q&A  >  본문

java - 단위 테스트, 데이터베이스를 오염시키지 않고 스프링이 트랜잭션을 관리하도록 하는 방법

DAO 메서드를 테스트하기 위해 springjunit을 사용하려고 합니다. 트랜잭션 작업에 Spring의 선언적 트랜잭션 관리(예: @Transactional)를 사용하는 몇 가지 메서드를 인터넷에서 보았는데 테스트가 완료된 후 Spring이 테스트 목적을 달성하기 위해 테스트 메서드를 롤백할 수 있습니다.
그런 다음 이 접근 방식을 따라 dao에서 작업을 추가하는 방법을 테스트했습니다. 트랜잭션이 제출된 후 롤백이 성공하지 못했고 테스트한 데이터베이스에 추가 데이터가 있음을 발견했습니다. 처음에는 스프링이 롤백을 수행하지 않아서 그런 줄 알았는데 나중에 콘솔 프린트 정보를 관찰해 보니 롤백 정보가 있는 걸 발견했는데 왜 실패했는지는 명확하지 않았습니다. 몇 가지 관련 솔루션을 찾았지만 해당 솔루션이 내 문제를 해결하지 못했다는 것을 알았습니다. 너무 고민이 많아서 도움을 청하려고 왔습니다. 조언 좀 해주셨으면 좋겠습니다.

다음은 내 코드와 해당 구성입니다

으아악 으아악 으아악 으아악
阿神阿神2686일 전1048

모든 응답(2)나는 대답할 것이다

  • 我想大声告诉你

    我想大声告诉你2017-06-12 09:27:30

    스프링 테스트와 결합된 dbunit을 사용하여 테스트하세요

    회신하다
    0
  • typecho

    typecho2017-06-12 09:27:30

    Transactional은 서비스 레이어 트랜잭션이므로 DAO 레이어에서 트랜잭션을 작성할 필요가 없습니다.

    회신하다
    0
  • 취소회신하다