티스토리 뷰

공부/tdd

2주차

doublemetal 2014. 3. 26. 14:24
  1. 설계의 완벽함보다 동작하는 코드가 우선이다.

    • 우선 동작하는 코드를 작성한 뒤에 리팩토링을 통해 설계를 보완한다.
    • TDD를 통해 잘 동작하는 깔끔한 코드를 작성하자.
       
  2. Unit Test (단위 테스트)
    • unit 
      미국·영국 [|ju:nɪt] 발음듣기 영국식 발음듣기  다른 뜻(1건) 예문보기

      1. 구성 단위   2. (상품의) 한 개   3. (특정 임무를 위한) 부대
    • unit test란 단어대로 프로그램의 작은 부분(모듈) 하나를 테스트하는 것을 말한다.
    • 주로 하나의 method(function)가 대상이 되며 사내에서는 Branch coverage를 적용
       
    • test는 어떤 상황에서도 초록막대를 유지해야하기 때문에 외부 환경에 의존적인 코드는 지양하거나, 그에 대한 의존성을 제거한다.
    • 의존성 제거를 위해서 Mock을 적용하기도 한다.
    • 즉 unit test는 타겟 모듈만을 바라보며 정상적으로 작동하는지 확인하는 작업이다.
    • unit test ==             
  3. 클래스?
    • 설계를 먼저 할 때는 클래스를 '잘' 추출하는게 문제였는데 TDD에서는 그렇지 않은 것 같다.
    • 일단 객체 같은 녀석들은 모두 추려내 빠르게 개발하고 리팩토링을 통해 중복을 제거하고 필요하다면 추상화한다. (맞나?)
    • 화폐 예제의 Dollar, Franc 클래스를 보자, 중복 코드들을 모두 Money 클래스로 추상화하고 결국엔 하는 일이 없어 폐기처분된다.
       
  4. 있으면 좋을 것 같은 테스트를 작성하라
    • 그렇게 하지 않으면 이가 나빠진다. (p79)
    • 테스트를 보다 더 견고하게 만들고 개발자에게 자신감을 줄 것 같다.
       
  5. assertTrue(sum instanceof Money); ???
    • 다음은 교재 16장 말미에 있는 테스트다.
      테스트
      1
      2
      3
      4
      5
      @Test
      public void testPlusSameCurrencyReturnsMoney() throws Exception {
          Expression sum = Money.dollar(1).plus(Money.dollar(1));
          assertTrue(sum instanceof Money);
      }
    • Expression의 구현체로 Sum, Money가 있는데 Money의 plus 메소드는 Sum 객체를 생성해서 반환한다.
    • 그런데 이게 Money의 객체가 될 수 있는가??
    • 테스트를 통과시키려면??


'공부 > tdd' 카테고리의 다른 글

Spring 프레임워크의 도움을 받아 테스트하기 (프레임워크 의존성 제거)  (0) 2014.04.20
xunit example 실습  (0) 2014.04.18
3부 테스트 주도 개발 패턴  (0) 2014.04.17
2주차  (0) 2014.03.26
1주차  (0) 2014.03.26
[TDD] Mock 객체  (0) 2014.03.07
댓글
댓글쓰기 폼