개발 & 방법론/TDD
Mockito 알아보기 (부제 : BDD)
테스트 코드 입문자라면 겪어보는 문제 테스트 코드를 작성한지 얼마 안 되었을 때 의존성이 있는 객체의 테스트 코드를 작성하면서, 의존하는 객체의 실제 인스턴스를 생성해서 진행한 적이 많았다. 나중에 변경이 생기면 관련된 테스트가 모두 실패하는 상황이 잦았다. (고치는 것도 고역이였다.) 그러다 보니 나중엔 테스트 코드 때문에 변경이 무서워지는 상황이 생겼다. 유연하게 변경하기 위한 테스트 코드 때문에 변경이 무섭다니... 아이러니한 상황이다. 또한 외부 API를 의존할 경우에 테스트 코드를 어떻게 작성해야 할지 막히는 경우도 있다. 잘못된 걸 인식했으면 해결하기 위해 고민을 해야 했는데 당시에는 '테스트 코드가 복잡해지면 이런갑다~' 하고 아무 생각없이 넘어갔다. DDD 세레나데 교육과 인프런 백기선 강..
AssertJ 알아보기 (부제 : Jupiter, Hamcrest 맛보기 )
많은 곳에서 JUnit에서 제공하는 공식 기능인 Jupiter가 아닌 AssertJ를 사용하고 있다. 여러 교육과정이나 인강에서도 AssertJ를 권장하는데 그 이유는 무엇일까? 간단히 알아보자. AssertJ 이란? 테스트에 관련된 많은 기능을 제공하고 메서드 체이닝으로 가독성 높은 테스트 코드 작성을 지원하는 오픈 라이브러리다. AssertJ Import AssertJ의 Assertions를 사용 할 때 주의점은 것은 기존 JUnit의 Assertions와 같은 클래스명을 가진다. import 경로는 org.assertj.core.api 다. AssertJ 사용방법 assertThat(검증대상) 로 시작하며 메서드 체이닝을 이용하여 검증 메서드를 연쇄적으로 사용할 수 있다. AssertJ가 제공하는 ..
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..
테스트 코드를 작성하는 이유
지금 테스트 어떻게 하시나요? 이전까지 일해왔던 레거시 환경에서는 테스트가 서버를 띄우고 Postman 이나 화면에서 직접 입력폼 하나씩 입력하는 방식으로 다양한 use case 에 맞게 수작업 단순노동을 하면서 결과를 보내고 콘솔로 찍히는 로그가 정상인지 확인하는게 일반적인 테스트인줄 알았다. 이 방식은 경험상 단점이 존재한다 시간이 많이 필요 : 서버 띄우고 직접 입력폼 하나씩 입력하는 방식은 불필요한 행동이 많아 시간적 소비가 많다 유스케이스 기록 : 다양한 유스케이스에 대한 테스트를 기억하기 위해선 엑셀같은 문서에 남겨야한다. 최소 수십개의 테스트를 진행하다 까먹고 다시하거나 잊고 누락하는 경우가 생기기 때문이다 상황 대처 느림 : 운영중에 예상치 못한 에러가 발생하면 빠르게 파악하고 수정해서 반..
테스트코드 첫걸음
나는 이전까지 레거시 환경에서 테스트코드에 대해 들어본적이 없었고 jUnit 도 모르니 테스트를 한다면 화면 띄우고 디비에 연결해서 입력폼에 값 하나씩 입력하고 확인 버튼을 누르는 등 직접 결과를 확인했다 하지만 인강과 관련 개발서적(TDD)를 읽어보니 테스트에 대해 너무 무지했다는 걸 깨달았다 진행 중인 스터디의 주제로 리팩토링이 나왔는데 요구사항에 테스트 코드가 있고 스터디장이 테스트에 대해 설명을 해줘서 손쉽게 접근을 했다. 테스트 코드는 Gilded Rose 의 리팩토링 과제로 진행했다 emilybache/GildedRose-Refactoring-Kata Starting code for the GildedRose Refactoring Kata in many programming languages...