재민님, 향로님, 토비님이 스프링 테스트에 대한 @Transactional 사용에 대한 의견들을 남겨주셨다. 모두 너무 정성들여 적으글들이라 한번에 모아서 읽어 보시면 Spring Test 시 @Transactional 사용에 대한 다양한 의견을 통해 DB 를 이용한 통합테스트에 대한 시각이 넓힐수 있을 것이다. 저도 몰랐던 사실을 많이 알게 되어 블로그와 영상으로 공유해주신 분들에게 감사한 말씀을 드립니다. :) 재민님의 '테스트에서 @Tansactional을 사용해야할까' https://youtu.be/PDhN6aiF7QQ?si=4Go7aqNAAL9wGrY8 향로님 '테스트 데이터 초기화에 @Transactional 사용하는 것에 대한 생각' https://jojoldu.tistory.com/761 ..
혹시 String createdAt 로 선언하지 사용하지 않으신가요? DateTimeParseException 으로 고통받고 있지 않으신가요? 하지만 String 타입으로 데이터를 처리하고 있다면 버그나 Exception 이 발생하는 코드를 작성할 확률이 높아진다. 강타입 언어를 사용하는 장점을 전혀 활용하고 있지 못하기 때문에 적절한 타입을 사용하는 게 중요하다. 왜 도움이 되는지는 찬찬히 설명해 보려고 한다. java 표준 API 사용되는 타입을 사용한다면 데이터에 대한 유효성 검증을 library level (정확히는 Type 이 생성되는 시점) 에서 검증이 된다. Exception Handling이나 validation check를 코드를 작성하는 개발자가 직접 하지 않아도 된다는 뜻이다. 그렇다..
KSUG 하반기 가을세미나 - 당신의 자바를 한단계 올려드립니다 더 자바 코드를 테스트하는 다양한 방법 - 백기선 최근 MSA 환경에서 다른 시스템이나 데이터 중심의 테스트코드를 작성해야 하는데, 이를 해결하기 위한 좋은 방법이 될것 같다는 생각이 들었다. 그리고 테스트환경을 실제 환경하고 동일하게 해야한다에 대해서 여러 의견이 많지만, 동일하게 해야 한다는 관점에서 좋은 방법을 제시해 주셨던 것 같다. 발표자료: https://bit.ly/2q8S3Qo 세션 내용 Spring Boot 2.2 가 릴리즈 되면서 JUnit 5 가 추가되었다. Jupiter (junit 5 프로젝트명) 는 하위호환이 되지 않고 vintage engine 을 추가 해야한다. Spring-boot-starter-test 2.2..
이글은 Spring Boot 로 Test 작성시 @MockBean 이 제대로 동작하지 않는 삽질을 하게 되어 정리합니다. 새로운 조직에 와서 @MockBean 을 사용을 하여 IntegrationTest 를 작성 중이였는데, Mocking 이 제대로 동작을 하지 않아서 한참을 삽질을 하였다. 결론 부터 말하면 바로 이전팀에서도 동일한 삽질을 했었다. 하지만 똑같은 삽질을 하게 되어 이렇게 정리하게 되었다. 분명 나와 같은 실수를 하는 사람들이 있을 지도 모르기에 기록으로 남기고자 한다. 왜 삽질을 했나? Spring Boot 으로 DBUnit 을 이용하여 테스트를 작성할려고 하면 springtestdbunit/spring-test-dbunit 가이드대로 하게 된다. 그런데 @MockBean 이 동작 하지..