spring 2

Transaction살펴보기1) 엥 왜 롤백이 되지? Transaction silently rolled back because it has been marked as rollback-only.

요약 문제: 롤백 말고 그냥 흐르게 하고 싶은데 롤백이 된다. 원인: 스프링에 기본적으로 RuntimeExcepion이 발생하면 롤백을 시킨단다. 해결방법: 몇 가지 방법들이 있음 & 해결방법에 따라 결과가 다름. 주의!! [해결방법] 트랜잭션 전파 전략=RequiresNew를 사용한다. 즉, 메서드를 별도 트랜잭션으로 처리한다 @Transactional(propagation = Propagation.REQUIRES_NEW) 주의! Out 메서드의 로직은 모두 실행되지만, 예외가 발생한 Inner 메서드 로직은 RollBack된다. Out 클래스와 트랜젝션이 분리되었기 때문이다. RuntimeException 대신, Exception 로 예외를 발생시킨다. throw new Exception("에랏 받아..

[JUnit] Mockito.verify() 사용할 때 @Autowired vs @MockBean vs @SpyBean

verify() 용도 test 코드가 실행되는 동안 특정 메서드가 실행된 횟수등을 확인합니다. E.g. verify(mock, times(5)).someMethod("was called five times"); 사용하다보니 몇가지 주의사항이 있어서 글을 남깁니다. 아래 2가지 내용을 확인하세요. 빨리 확인해야한다면 '정리' 만 바로 확인하세요. 1. MockBean만 검증할 수 있다. 실무에서 이미 작성된 테스트코드에 추가로 verify() 검증을 추가해봅니다. 근데.. 에러가 발생합니다 Argument passed to verify() is of type PointService$$EnhancerBySpringCGLIB$$2aeafde9 and is not a mock! verify()로 전달된 매개변수..