Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 만들면서배우는클린아키텍처
- 유지보수
- Java
- template
- TDD
- 클린아키텍처
- 함수형프로그래밍
- web
- Spring
- FP
- Kotlin
- 객체지향의사실과오해
- 테스트
- 개발방법론
- Boot Legacy 차이점
- 추상화 설계
- 개발서적
- 조영호
- 코틀린
- DDD
- Thymeleaf
- 계층형아키텍처
- 이펙티브코틀린
- 테스트주도개발
- 책스터디
- 아키텍처
- 도메인 주도 개발 시작하기
- GrokkingFunctionalProgramming
- 헥사고날아키텍처
- 스터디
Archives
- Today
- Total
김동형수 개발기
테스트 주도 개발 - 1부 11장 본문
11장 모든 악의 근원
할일목록
- $5 + 10CHF = $10(환율이 2:1일 경우)
$5 X 2 = $10amount를 private로 만들기Dollar 부작용?- Money 반올림?
equals()- hashCode()
- Equal null
- Equal object
5CHF X 2 = 10CHF- Dollar / Franc 중복
공용 equals공용 timesFranc와 Dollar 비교하기통화?- testFrancMultiplication 제거
Dollar, Franc에는 이제 달랑 생성자 밖에 없다.
단지 생성자 때문에 하위 클래스가 있을 필요는 없기 때문에 제거하는게 좋겠다.
코드의 의미를 변경하지 않으면서도 하위 클래스에 대한 참조를 상위 클래스에 대한 참조로 변경할 수 있다.
이후 중복이 되는 동치성 테스트를 제거한다.
할일목록
- $5 + 10CHF = $10(환율이 2:1일 경우)
$5 X 2 = $10amount를 private로 만들기Dollar 부작용?- Money 반올림?
equals()- hashCode()
- Equal null
- Equal object
5CHF X 2 = 10CHFDollar / Franc 중복공용 equals공용 timesFranc와 Dollar 비교하기통화?testFrancMultiplication 제거
클래스 대신 currency를 비교하도록 강요하는 테스트 코드는 여러 클래스가 존재할 때만 의미가 있다.
이해하기로는 인스턴스 필드의 값으로 구분지어지는 적은 수의 하위클래스가 있다면 equals에 인스턴스가 아닌 getClass() 메서드를 이용해서 동치성 검사를 한다고 이해했다.
하위 클래스인 Franc을 제거하는 중이기 때문에 Franc에 대한 테스트 및 클래스를 제거한다.
Franc, testDifferentClassEquality()를 제거한다.
현 상태의 코드에서 Money의 하위 클래스인 Dollar, Franc의 로직 차이는 currency가 다른 것 말고는 로직상에 차이가 없기 때문에 Franc을 위한 테스트인 testFrancMultiplication()을 지워도 신뢰를 잃지 않을 것이다.
정리
- 하위 클래스의 속을 들어내는 걸 완료하고, 하위 클래스를 삭제했다.
- 기존의 소스 구조에서는 필요했지만 새로운 구조에서는 필요 없게 된 테스트를 제거했다.
'책 스터디 > [완료] 테스트 주도 개발' 카테고리의 다른 글
테스트 주도 개발 - 1부 13장 (0) | 2022.09.14 |
---|---|
테스트 주도 개발 - 1부 12장 (0) | 2022.09.14 |
테스트 주도 개발 - 1부 8장 (0) | 2022.09.07 |
테스트 주도 개발 - 1부 7장 (0) | 2022.09.07 |
테스트 주도 개발 - 1부 6장 (0) | 2022.08.30 |
Comments