TDD
TDD :: 화폐 예제 (1/2)
리듬을 보자. 이 책의 1부에서는 테스트에 의해 주도되는 전형적인 모델 코드를 개발한다. 테스트 주도 개발의 리듬을 보자. 재빨리 테스트 하나 추가 모든 테스트를 실행하고 새로 추가한 것이 실패하는지 확인 코드 수정 모든 테스트를 실행하고 전부 성공하는지 확인 리팩토링을 통해 중복 제거 다중 통화를 지원하는 Money 객체 이런 보고서가 있다고 하자. 종목 주 가격 합계 IBM 1000 25 25000 GE 400 100 40000 합계 65000 다중 통화를 지원하는 보고서를 만들려면 통화 단위를 추가해야 한다. 종목 주 가격 합계 IBM 1000 25USD 25000USD Novartis 400 150CHF 60000CHF 합계 65000USD 또 환율도 명시해줘야 한다. 기준 변환 환율 CHF US..
TDD :: TDD 를 시작하며
Clean code that works. (작동하는 깔끔한 코드) - Ron Jeffries 테스트 주도 개발의 궁극적인 목표. 개요 많은 요인들은 우리를 깔끔한 코드로부터 멀어지게 만들고 작동하는 코드조차 만들기 어렵게 하는 현실이다. 이런 두려움에 빠지지 말고 자동화된 테스트로 개발을 이끌어가자. 이런 개발 방식이 바로 테스트 주도 개발 ! 테스트 주도 개발은 오직 자동화된 테스트가 실패할 경우에만 새로운 코드를 작성한다. 중복을 제거한다. 이 두 가지 규칙만을 따른다. 위 두 가지 규칙에 의해 프로그래밍 순서는 다음과 같이 결정된다. 빨강 - 실패하는 작은 테스트를 작성한다. 컴파일도 안 될수도 .. 초록 - 빨리 테스트가 통과하게끔 만든다. 무슨 수를 써서라도 ! 리팩토링 - 일단 테스트를 통과시..
JUnit :: ParameterizedTest 로 경계값 테스트하기
경계값에서 장애가 많이 일어난다 테스트할 때는 input 값의 경계값에 대해서 항상 테스트를 진행해야 한다 그러기 위해 ParameterizedTest 를 이용하면 여러 데이터 소스를 사용할 수 있다. build.gradle 수정 junit-jupiter-params 추가 testImplementation 'org.junit.jupiter:junit-jupiter-params:5.8.2' 자세한 내용은 아래 링크 참조 https://www.petrikainulainen.net/programming/testing/junit-5-tutorial-writing-parameterized-tests/ 실습 비밀번호 입력 값 검증 테스트 요구사항 비밀번호는 최소 8자 이상 12자 이하여야 한다. 비밀번호가 8자 미..
TDD와 Unit Test
이동욱 저자의 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 를 읽다가, Unit Test 에 대해 이해하기 쉽게 설명된 부분이 있어 인용해서 적어보았다. 먼저, TDD 와 Unit Test 는 다르다. TDD 는 Test-Driven Development, 테스트 주도 개발을 의미한다. TDD 는 Test 코드를 작성하는 것부터 시작한다. Red Green Cycle TDD는 위 그림과 같은 프로세스를 가진다. 항상 실패하는 테스트를 먼저 작성 (Red) 테스트가 통과하는 프로덕션 코드를 작성 (Green) 테스트가 통과하면 프로덕션 코드를 리팩토링 (Refactor) 반면 Unit Test 는 TDD 의 첫 번째 단계인 기능 단위의 테스트 코드를 작성하는 것을 의미한다. TDD 처럼 테스트를 반드시..