테스트코드의 필요성
Spring 2022. 5. 9. 11:56

들어가며 5개월 전, 테스트코드를 처음 작성하면서 이런 생각을 했다. '이거... 테스트 통과하는 게 당연한 거 아니야...?' 'given에서 조건을 다 주고 테스트하는데 당연히 통과하지... 이럴 거면 왜 테스트코드를 작성하는 거지?' '내가 뭔가 잘못 작성하고 있나?' 멘토님은 테스트코드의 필요성을 제대로 알지 못하면 그런 생각이 드는 게 당연하고, 심지어 '짜고 치는 거 아닌가'라는 생각이 드는 것도 맞게 생각한 거라고 하셨다. 여기에서 말하는 테스트코드의 필요성에는 어떤 게 있을까? 테스트코드를 왜 작성해야 하는지 알아보자. 필요성 DB 변경 없이 테스트 실무에서는 API 호출을 통해 동작을 테스트하기 어려운 경우가 많다. 실제 사용하는 DB를 변경하면 절대 안되기 때문에 로컬 환경이 아닌 이상..

Spring REST Docs + ɑ 도입기
Spring 2022. 4. 4. 22:36

- 부제 : 테스트를 통과하면 문서가 생성되는 서비스가 있다?! - 들어가며 이 글에서는 Spring REST Docs, openapi3, swaggerUI를 다룰 것이다. 각각에 대해 자세히 다루지는 않겠지만, 세 가지의 서비스를 한번에 적용하는 글이 많지 않아 직접 정리해볼 생각이다. 왜 Spring REST Docs일까? swagger Documentation, 하면 swagger를 떠올리는 사람들이 많을 것 같다. 첫 프로젝트를 할 때에는 그것조차 몰라서 google spread sheet로 API 명세서를 정리하곤 했다. 그러다 API 테스트까지 해볼 수 있는 툴(이게 swagger였다.)이 있다는 걸 알게 됐지만, 사용하고 싶지는 않았다. annotations 컨트롤러에 많은 annotatio..

@Transactional과 프록시
Spring 2022. 3. 20. 03:08

문제 @Transaction이 붙은 메서드가 해당 클래스 내에 또다른 @Transactional이 붙은 메서드를 호출합니다. 이 때 새로운 트랜잭션이 적용될까요, 적용되지 않을까요? 정답 새 트랜잭션은 적용되지 않습니다. 이유 프록시 때문이야~🎶 설명 왜 프록시 때문이라고 하는지, 왜 두 번째 @Transactional은 제대로 동작하지 않는지 궁금하시죠? 바로 프록시 때문입니다. 프록시란? 프록시는 객체에 대한 접근을 제어해야 하거나 객체에 접근 시 추가 기능을 제공해야 할 경우 사용될 수 있습니다. 예를 들어, 요청을 보낸 클라이언트에게 응답하기 전 먼저 올바른 권한이 있는지 검사하고 싶을 때 사용될 수 있다는 말이죠. 프록시를 사용할 때의 장점은 다음과 같습니다. 사이즈가 큰 객체가 로딩되기 전이라..