테스트
[Test] 대역(Test Doubles) : Stubs, Mocks
[Test] 대역(Test Doubles) : Stubs, Mocks
2022.06.10대역의 필요성 테스트를 작성하다 보면 다양한 사유로 대역이 필요해지게 됩니다. 테스트 수행이 외부 의존성에 영향을 주면 안되는 경우 e.g., withdraw 요청이 포함된 기능을 테스트 할 때, 실제로 withdraw 요청이 API 서버에 전달되어서는 안됨. 테스트 내에서 같은 요청을 보냈을 때, 외부 의존성의 응답이 항상 동일할 것이라고 신뢰 할 수 없는 경우 (대부분) e.g., 테스트용 카드를 받았으나, 만료되는 경우 e.g., 외부 의존성에 장애가 발생하는 경우 외부 의존성으로 부터 원하는 응답을 일으키기 어려운 경우 대역의 간단한 예제 테스트 하고자 하는 것이 아래와 같을 때 `` AutoDebitRegister.register(user, cardNum)`` - cardNum 유효성에 따라 V..
[Test] 통합 Test를 위한 DB는 어떻게 구성하면 좋을까? - Testcontainers
[Test] 통합 Test를 위한 DB는 어떻게 구성하면 좋을까? - Testcontainers
2021.05.03pdf 내용 요약 Spring Batch는 통합TC 수행하고 나서 자동 rollback이 불가하다. TC에 alpha DB를 사용하는 경우 아래와 같은 문제가 생긴다. Spring MVC에서는 TC에 @Transactional @Rollback 처리하면, TC 수행 후 자동 롤백이 되기 때문에, 테스트 수행 시 alpha DB를 사용하도록 구성하는 경우가 많다. 그러나 Spring Batch에서는 TC에 @Transactional 사용이 불가하다. 따라서 @Rollback도 사용 불가하다. 롤백이 없으니 TC를 수행하고 나면 DB 상태가 매번 바뀌게 되며, alpha QA하며 실시간으로 변경되는 DB 상태와 TC 수행으로 변경되는 DB 상태가 서로에게 영향을 미치게 된다. TC에서 시작 전 어떤 테이블을..