Dev/TDD 13

Junit In Action - TDD를 위한 테스트 원칙, 도구 및 활용 Review - 핵심 애노테이션 ( 1/2 )

개발환경IDE :  intelliJ FrameWork : springboot 3.xLaunguage : java 17TestTool : Junit5   예제 소스 링크   들어가기 전에  개발 방식을 TDD로 전환하면서 테스트 코드 작성 시 여러 난관에 부딪혔다. 공식 가이드를 보며 이것저것 시도해보기도하고, 구글링과 ChatGPT를 통해 예제 코드도 많이 봤고, Git에서 떠돌아다니는 오픈소스의 테스트코드들을 뜯어보며 어떻게 작성하는 게 좋을지에 대해 많은 고민을 했다.  처음에는 Mock이고 Stub이고 하는것들의 개념 없이 그냥 서비스 레이어의 메서드 단위로 테스트를 시작했다.  뭐가 뭔지도 잘 모르는 상태에서 단순히 그냥 '코드를 먼저 작성하는' 정도에 그쳤다.  특히 Controller 관련 코..

Dev/TDD 2024.06.14

MockMvc 을 사용해서 Controller 테스트 코드 작성하기

개발환경 IDE : intelliJ FrameWork : springboot 3.2.2 Launguage java 17 DB : h2 Build Tool : Gradle 1. Controller 테스트 하기 Controller 작성 후 테스트할 때 MockMvc 를 이용하면 정상적으로 내가 원하는 요청을 넣었을 때 응답이 리턴되는지 확인 할 수 있다. 사용 방법은 다음과 같다. @AutoConfigureMockMvc @SpringBootTest @Autowired MockMvc mvc; @Autowired TestService service; @Test void testExample() throws Exception { ... given(this.userVehicleService.getVehicleDet..

Dev/TDD 2024.01.29

@Transactional 사용시 Insert/update 유의점

개발환경 IDE : intelliJ FrameWork : springboot 3.2.2 Launguage java 17 DB : h2 문제상황 Junit5을 통해 단위 테스트를 진행하다가 Insert / update 관련해서 로그가 찍히지 않는 현상이 발생했다. 테스트 편의성을 위해 메모리 DB 를 사용하고 있었기 때문에, 실제로 DB 에 들어간것을 확인하기도 힘들어서 Rollback 설정도 해보고 .. 삽질을 했는데 결과적으로는 @Transactional 을 선언한것이 문제였다. 해결방안 @Transactional 을 쓰면 롤백이 발생하는데 , jpa 특성상 롤백이 되면 nsert/update 상태를 확인할 수없다! 바로 flush 가 발생하지 않기 때문이다. ( flush 관련 내용은 여기로 )

Dev/TDD 2024.01.29