테스트 코드

    DDD 세레나데 1주차 - 도메인 주도 설계 이해

    NEXTSTEP에서 진행하는 교육과정 DDD 세레나데 2기다. DDD(Domain-Driven Design) 세레나데 edu.nextstep.camp 교육을 수강한 지 1년이 지났지만, 이제야 후기를 작성한다. 1주차 후기 1주차는 레거시 코드를 통해 도메인 주도 설계 등장 배경을 겪어보고, 왜 도메인 주도 설계인가를 알아본다. 리팩토링을 하기 위한 첫걸음으로 테스트 코드를 학습한다. 테스트 코드를 작성하는 방법은 여러 가지로 모두 경험해보고 어느 상황에 사용하면 좋을지 알아본다. 텐트를 세우기 위해 말뚝이 필요하듯이 리팩터링을 하기 위해선 테스트 코드가 필요하다. 나는 TDD, 클린코드 with Java 11기가 끝난 지 얼마 안 된 시점이라 생소한 개념이 많아서 따라가기 힘들었는데 아래의 개념을 들어..

    시작글 - 테스트 주도 개발로 배우는 객체 지향 설계와 실천

    11월에 읽기 시작한 테스트 주도 개발로 배우는 객체 지향 설계와 실천이다. 이 책을 통해 테스트 주도 개발에 대한 의미를 새롭게 가지게 되었다. 이전까지 TDD를 오버엔지니어링을 막고, 변화에 유연하게 대처할 수 있는 개발 방법이라 생각했었지만 미쳐알지 못했던 혹은 제대로 인식을 못했던 테스트 코드에 대한 많은 내용을 알게 해주었다. 책은 5부(27장)까지 이뤄져있다. 1부 - 서론 : 테스트 주도 개발의 간단한 소개와 도구를 언급하는데, 도구는 당시 기준으로 JUnit4와 햄크레스트 매처, jMock2 설명한다. 2부 - 테스트 주도 개발 과정 : ATDD 방법론과 객체지향에 대해 설명한다. 3부 - 동작하는 예제 : 이전까지 설명한 내용을 경매시스템 예제를 통해 ATDD 방법으로 작성한다. 예제가 ..

    Mockito 알아보기 (부제 : BDD)

    테스트 코드 입문자라면 겪어보는 문제 테스트 코드를 작성한지 얼마 안 되었을 때 의존성이 있는 객체의 테스트 코드를 작성하면서, 의존하는 객체의 실제 인스턴스를 생성해서 진행한 적이 많았다. 나중에 변경이 생기면 관련된 테스트가 모두 실패하는 상황이 잦았다. (고치는 것도 고역이였다.) 그러다 보니 나중엔 테스트 코드 때문에 변경이 무서워지는 상황이 생겼다. 유연하게 변경하기 위한 테스트 코드 때문에 변경이 무섭다니... 아이러니한 상황이다. 또한 외부 API를 의존할 경우에 테스트 코드를 어떻게 작성해야 할지 막히는 경우도 있다. 잘못된 걸 인식했으면 해결하기 위해 고민을 해야 했는데 당시에는 '테스트 코드가 복잡해지면 이런갑다~' 하고 아무 생각없이 넘어갔다. DDD 세레나데 교육과 인프런 백기선 강..

    JUnit5 알아보기

    인텔리제이를 사용하는 자바 개발자가 90% 이상 사용한다는 JUnit을 간단히 알아보러 한다. 자세한 내용은 공식 가이드를 참고하기 바란다. JUnit 5 JUnit이란? JUnit은 자바 프로그래밍 언어용 유닛 테스트 프레임워크이다. JUnit은 컴파일 타임에 JAR로서 링크된다. [위키백과] JUnit5 구성요소 Junit5는 3가지로 구성되어 있다. - JUnit Platform : JVM에서 테스트 프레임워크를 실행하는 기반, 테스트 엔진 API 제공 - JUnit Jupiter : 테스트를 작성하기 위한 프로그래밍 & 익스텐션 모델을 제공 - JUnit Vintage : 이전 버전을 위한 테스트 엔진 제공 (JUnit3 & JUnit4 호환) 왜 JUnit5 인가? JUnit 시리즈 중에서 20..