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