본문 바로가기
SW

테스트 주도 개발(Test-Driven Development:By Example) - 1부 : 화폐 예제 (5 ~ 6장)

by 라꾸스떼(YR) 2020. 2. 2.
반응형

[5장] 솔직히 말하자면

1.테스트 작성.

2.컴파일 되게 하기.

3.실패하는지 확인하기 위해 실행.

4.실행하게 만듦.

5.중복 제거.

각 단계에는 서로 다른 목적이 있다. 다른 스타일의 해법, 다른 미적 시각을 필요로 한다. 처음 네 단계는 빨리 진행해야 한다. 그러면 새 기능이 포함되더라도 잘 알고 있는 상태에 이를 수 있다. 거기에 도달하기 위해서라면 어떤 죄든 저지를 수 있다. 그동안 만큼은 속도가 설계보다 더 높은 패이기 때문이다.

 

[정리]

-큰 테스트를 공략할 수 없다. 그래서 진전을 나타낼 수 있는 자그마한 테스트를 만들었다.

-뻔뻔스럽게도 중복을 만들고 조금 고쳐서 테스트를 작성했다.

-설상가상으로 모델 코드까지 도매금으로 복사하고 수정해서 테스트를 통과했다.

-중복이 사라지기 전에는 집에 가지 않겠다고 약속했다.

 

[6장] 돌아온 ‘모두를 위한 평등’

이제 청소할 시간이다. 가능한 방법 중 한 가지는 우리가 만든 클래스 중 하나가 다른 클래스를 상속받게 하는 것이다. 또 다른 방법으로는 두 클래스의 공통 상위 클래스를 찾아낼 생각이다.

적절한 테스트를 갖지 못한 코드에서 TDD를 해야 하는 경우가 종종 있을 것이다. 충분한 테스트가 없다면 지원 테스트가 갖춰지지 않은 리팩토링을 만나게 될 수 밖에 없다. 리팩토링하면서 실수했는데도 불구하고 테스트가 여전히 통과할 수도 있는 것이다. 어떻게 할 텐가? 있으면 좋을 것 같은 테스트를 작성하라. 그렇게 하지 않으면 결국에는 리팩토링하다가 뭔가 깨트릴 것이다.

 

[정리]

-공통된 코드를 첫 번째 클래스(Dollar)에서 상위 클래스(Money)로 단계적으로 옮겼다.

-두 번째 클래스(Franc)도 Money의 하위 클래스로 만들었다.

-불필요한 구현을 제거하기 전에 두 equals() 구현을 일치시켰다.

반응형

댓글