스터디/코드리뷰

테스트 코드에는 일련의 로직을 넣지 말자

들어가며테스트 코드의 미덕은 무엇일까~프로덕션 코드의 안정성을 비롯해 여러가지 장점이 있겠지만프로덕션 코드가 어떻게 동작하는지 설명하는 문서로써의 역할도 톡톡히 한다고 볼 수 있다. 다시말해 누군가가 읽어야 하는 대상이라는 말이다.누군가가 읽어야 한다면 읽는데 부담이 없어야 하니 이해를 방해하는 요소는 적으면 적을수록 좋다.그런데 테스트 코드를 작성하다보면 유혹에 넘어가 이해를 방해하는 요소를 작성하는 경우가 생기곤 한다. 물론 코드를 작성하는 당시 '나'는 해당 코드를 잘 이해할수 있을지 모르지만한달이 지나고 두달이 지난뒤 그 코드를 다시 읽는 '나'는 이전의 '나'와 거의 다른사람이다.결국 내가 작성한 코드도 쉽게 이해하지 못 할 수 있다. 여기서 이해를 방해하는 요소는 테스트 코드에 일련의 로직을 ..

2025.02.23 게시됨

스터디/코드리뷰

테스트도 단일책임원칙을 지키자

들어가며테스트 코드를 작성하는게 익숙치 않은 리뷰이들을 보면 간혹 테스트에서 여러가지를 한번에 테스트하는 모습을 보곤한다.여러가지라 표현한 이유는 그 케이스가 하나의 양상을 띄는게 아니라서 그렇다. 동일한 케이스에 대한 반복을 하는 경우도 있고해피케이스와 엣지케이스를 섞기도 하며컨텍스트를 유지하며 일련의 흐름을 작성하기도 한다. SRP(Single Responsibility Principle: 단일책임원칙)에 대해 한번쯤 들어봤으리라 생각한다.어떠한 객체에게 하나의 책임만 있어야 한다고 하는데 사실은 단일 (변경)책임 원칙이다.위키피디아를 보면 다음과 같이 적혀있다.The single-responsibility principle (SRP) is a computer programming principle ..

2025.02.19 게시됨

스터디/클린코드

Gradle TestFixtures 이용하여 테스트 코드 중복 줄이기

Gradle Test Fixture 사용해서 테스트 중복코드 줄이기 Gradle Test Fixture 테스트코드를 작성하다보면 테스트 코드에서도 중복된 코드가 굉장히 많이 발생하게 된다. 대표적인 예로 특정 도메인 객체를 생성해야하는 작업이다. 이러한 코드가 작성하기 어렵지는 않지만 그 양이 적지 않아서 테스트 코드를 작성할 때 시간을 잡아먹는 부분이기도 한다. Gradle 에서 제공하는 Test Fixture 기능을 이용하면 이를 쉽게 해결할 수 있다. 코틀린의 경우 gradle 문법만 달라져서 적용하는데 큰 문제 없었다. 예제코드는 Github 에서 확인할 수 있다. 문제 상황 테스트를 위해 간단하게 2개의 모듈을 가진 멀티모듈 구조를 만들었다. application 모듈이 core 모듈 의존성을 ..

2021.10.11 게시됨

스터디/클린코드

좌충우돌 jacoco 적용기

스터디 블로그 코드블럭 상태가 이상해서 먼저 여기에 올린당.. 좌충우돌 Jacoco 적용기 백기선님의 더 자바 강의를 보던 중 바이트 코드를 다루는 방법의 예시로 jacoco가 언급되었고 테스트 커버리지를 측정하여 build를 성공, 실패 시킬수 있다는 점을 알게되었습니다. 이를 이용하여 ''스터디에서 진행하는 장기 프로젝트와 토이 프로젝트에 적용하면 재미있겠다!' 라는 생각에 적용하며 겪은 내용을 정리해 보고자 합니다! Jacoco 적용하기 단순히 적용하는 것은 어렵지 않았습니다! jacoco 유저 가이드와 우아한 형제들의 jacoco 포스팅을 보면서 쉽게 적용할 수 있었습니다. jacoco plugin 추가 먼저 plugins 블록에 id 'jacoco' 를 추가해 주면 plugins { id 'ja..

2020.02.29 게시됨