회고/TIL

KafkaTest 추가, 책 구매: 디자인 패턴의 아름다움

KEEMSY 2023. 8. 28. 23:52

오늘은 오전에 이슈들을 하나씩 처리하기 시작했다. 그 중 가장 먼저 작업하기로 한 에러는 누락된 카프카 통합 테스트를 추가하는 것이다. 하지만 그렇지 않았다. 중간에 개인적인 일이 생겨 흐름이 끊기기도 하여서 그런지, 누락된 테스트는 간단하게 producer로서 publish메서드 테스트만 진행하면 되기에 금방 끝날 것 같았다. 


KafkaTest 추가

 

누락된 카프카 통합 테스트를 추가한다. · Issue #15 · KEEMSY/shoes-ordering-system

설명 과거 진행하지 외부 계층으로 판단하여 작성하지 않았던 카프카 연동테스트를 진행한다. 전체적인 서비스 관점에서 볼 때, 카프카 또한 서비스의 일부이므로 정상 작동함을 검증해야한다.

github.com

 

오늘은 이 이슈를 해결하고자 하였다. 이전 Member, Product 도메인 개발을 진행할 당시, 나는 kafka 통합테스트의 필요성을 느끼지 못했다. 외부서비시를 왜 내가 검증해야하지? 하는 잘못된 생각을 가졌었기 때문이다.

 

하지만 Order 개발간 친구의 피드백을 통해 사용하는 외부 서비스또한 내 서비스로서 검증해야함을 알게되었다. 그리고  kafka 통합 테스트를 추가하게 되었고, 이제 누락된 카프카테스트를 추가하고자 하였다.

 

테스트를 추가하는 것은 이전에 한번 고생(?)을 했어서인지 어렵지 않았다. 하지만 다른 부분에서 문제 어려움이 발생했다.

 

다른 부분에서 문제가 생겼다.

 

이 문제는 지난, Order 을 개발할 때도 발생한 문제로, 실제 개발한 KafkaProducer(Publisher)를 사용하는 클래스를 테스트 하는 부분에서 발생한 문제였다.

KafkaProducer를 사용하는 MemberCreateCommandHandler 클래스의 모습

 

 

지금 에러같은 경우에는 MemberCreateCommandHandler 테스트 중, MemberCreateRequestMessagePublisher 를 사용하는 부분을 검증하는 부분에서 문제가 발생했다.

 

문제가 발생한 부분, 1번만 호출함을 확인해야하는데, 불규칙적으로 1번이 아닌 2번이 불리기도하고, 또다시 1번이 호출되기도 하였다.

 

지난 번에도 이 문제를 겪었고, 이전에 해결한 방법을 바로 적용해 볼 수도 있었다. 하지만 이번에는 정말 근본 문제를 찾고싶었다. 그리고 이번에는 문제의 원인이 예상되는 부분이 있었다. 바로 Bean 컨테이너로 공유되면서, 컨텍스트가 공유되고 캐시되면서, 해당 메서드 호출이 두번으로 되었지 않을까? 하는 생각이 들었다.

 

내가 설정한 TestConfiguration의 모습.

 

그래서 나는 지난 카프카 테스트에서 사용했던, @DirtiesContext 를 사용해보았다. @DirtiesContext 는 스프링 프레임워크에서 제공하는 애노테이션으로, 테스트 메소드나 클래스가 스프링 컨텍스트의 상태를 변경하는 경우에 사용될 수 있다. 이 어노테이션을 사용하면테스트 실행 시에 컨텍스트를 재로딩하게 된다.

 

나는 이것을 통해 문제가 해결될 것 이라고 생각했다. 하지만 그렇지 않았다. 여전히 1번호출되었다가, 2번호출되었다가를 반복했다.

 

근데 정말 내 생각에는 이 Bean으로 등록되어 컨테이너에서 공유된것 때문인 것같은데.. 그래서 이번에는 공유되지 않도록, TestConfiguration에 등록한 Bean 을 제거하고, 각 테스트에서 MockBean 을 등록했다.

 

설정을 변경했다. TestConfiguration 에서 등록한 Mock을 제거하고, MockBean 으로 등록했다.

 

진짜 정말 신기하게 이렇게 수정을 하고 계속해서 테스트를 실행해도 문제가 발생하지 않았다. 희안하다.. 무엇 때문인걸까.. 예상되는 부분은 분명 공유가 되어 호출이 되는것으로 되는 것 같은데.. 좀 더 알아봐야겠다.

 


책 구매: 디자인 패턴의 아름다움

 

오늘은 오랜만에 책을 구매했다. 지금 봐야할 책이 많은데도 구매한 이유는 생일을 기념한 셀프 선물을 하고싶어서 샀다.(사고싶어서샀다.)

 

 

디자인 패턴의 아름다움 - 예스24

구글러의 코드 품질 관리 비법을 공개한다코드의 품질을 매우 중요시했던 구글러들은 코드에 달린 주석에서 작은 마침표 오류까지 수정을 요청하기에 이르렀고, 그만큼 엄격했던 코드 품질 관

www.yes24.com

 

책의 목차를 보았는데 안살수가 없었다. 목차의 내용들이 정말 다른 개발자들과 이야기를 나눠보고 싶은 내용들을 책의 내용으로 들어가 있었기 때문이다. 특히 큰 챕터보다, 작은 소제목들이 너무 매혹적(?)이었다.

 

요즘엔 책도 다음날 오천 7시전에 배송이 된다는, 빨리와서 이 책을 읽어보고 싶다.


어서 빨리 이력서도 수정하고  프로젝트개선도하고, 추가적으로 공부하는 내용도 정리도해야하는데, 자꾸 사적인일이 생겨서 이것에 집중을 못하는것같아 속상하다. 내 몸이 두개였다면.. 사적인 일도하고, 공부도 하고 싶은데.. 욕심은 많고.. 차근차근 꾸준히 조금씩 속도를 더 높여야겠다.

728x90