티스토리 뷰
728x90
반응형
그동안 대부분 구글(?)로 공부했었지만, 더욱 멋진 개발자가 되기위해 요즘 책을 읽고있습니다👏🏻
책 내용 전부를 정리하는 것이 아닌, TDD 예시에 대해서만 집중적으로 연습해보려고 해요!
📚 책 정보
📖 Test-Driven Development: By Example (테스트 주도 개발)
✍🏻 Kent Beck 지음 / 김창준, 강규영 옮김
🏢 인사이트 (insight)
다중 통화를 지원하는 Money 객체
요구 사항
- 어떤 금액을 어떤 수에 곱한 금액을 결과로 얻을 수 있어야 한다
🔴 RED
func test_어떤_금액을_어떤_수에_곱한_금액을_결과로_얻을_수_있어야_한다() {
// 선언 및 초기화
let fiveDoller = Doller(amount: 5)
// 곱셈
fiveDoller.multiply(by: 2)
// 곱셈이 잘 되는지 확인
XCTAssertEqual(5*2, fiveDoller.amount)
}
진행 상황
- 테스트에 대해 필요한 것을 단지 코드로만 작성했습니다.
Doller
클래스가 없습니다.- 따라서,
amount
,multiply(by: Int)
가 없습니다.
🟢 GREEN
class Doller {
var amount: Int
init(amount: Int) {
self.amount = amount
}
func multiply(by multiplier: Int) {
self.amount *= multiplier
}
}
func test_어떤_금액을_어떤_수에_곱한_금액을_결과로_얻을_수_있어야_한다() {
// 선언 및 초기화
let fiveDoller = Doller(amount: 5)
// 곱셈
fiveDoller.multiply(by: 2)
// 곱셈이 잘 되는지 확인
XCTAssertEqual(5*2, fiveDoller.amount)
}
진행 상황
Doller
클래스를 추가하였습니다.
🔵 REFACTOR
class Doller {
private var sumOfMoney: Int
init(amount: Int) {
self.sumOfMoney = amount
}
func multiply(by multiplier: Int) {
self.sumOfMoney *= multiplier
}
func amount() -> Int {
self.sumOfMoney
}
}
func test_어떤_금액을_어떤_수에_곱한_금액을_결과로_얻을_수_있어야_한다() {
// 선언 및 초기화
let fiveDoller = Doller(amount: 5)
// 곱셈
fiveDoller.multiply(by: 2)
// 곱셈이 잘 되는지 확인
XCTAssertEqual(5*2, fiveDoller.amount())
}
진행 상황
- 금액에 접근제한자를 추가하였습니다.
- 함수
amount()
를 추가하였습니다.
🤦🏻♂️ 회고
느낀 점
- 완전 별거아닌 테스트인데, 생각보다 오래걸렸어요..😅
아쉬웠던 점
- 금액에 대해
private
처리를 하면서get
처리를 해줘야했고, 그에따른 함수를 만들어주면서 네이밍을 변경했어요. 근데sumOfMoney
이 네이밍이 마음에 들지가 않아요😢
😎 마무리
전체 코드는 강경의 github에 나와있습니다. 이번 게시글은 강경의 github Issue에서도 확인할 수 있어요😁
이해가 안되는 부분이나, 틀린 부분이 있으면 코멘트를 남겨주세요!
피드백은 정말정말 환영입니다🎉🎉
728x90
반응형
'TDD' 카테고리의 다른 글
[Swift] 테스트 주도 개발 (켄트 백) - 타락한 객체 (0) | 2022.01.27 |
---|---|
TDD (1) | 2021.08.26 |