티스토리 뷰
- 화폐 예제
- money.zip
- $5 + 10CHF = $10
설계의 완벽함보다 동작하는 코드가 우선이다.
- 우선 동작하는 코드를 작성한 뒤에 리팩토링을 통해 설계를 보완한다.
- TDD를 통해 잘 동작하는 깔끔한 코드를 작성하자.
- Unit Test (단위 테스트)
- unit
- 미국·영국 [|ju:nɪt] 영국식 다른 뜻(1건) 예문보기
- 1. 구성 단위 2. (상품의) 한 개 3. (특정 임무를 위한) 부대
- unit test란 단어대로 프로그램의 작은 부분(모듈) 하나를 테스트하는 것을 말한다.
- 주로 하나의 method(function)가 대상이 되며 사내에서는 Branch coverage를 적용
- test는 어떤 상황에서도 초록막대를 유지해야하기 때문에 외부 환경에 의존적인 코드는 지양하거나, 그에 대한 의존성을 제거한다.
- 의존성 제거를 위해서 Mock을 적용하기도 한다.
- 즉 unit test는 타겟 모듈만을 바라보며 정상적으로 작동하는지 확인하는 작업이다.
- unit test ==
- 클래스?
- 설계를 먼저 할 때는 클래스를 '잘' 추출하는게 문제였는데 TDD에서는 그렇지 않은 것 같다.
- 일단 객체 같은 녀석들은 모두 추려내 빠르게 개발하고 리팩토링을 통해 중복을 제거하고 필요하다면 추상화한다. (맞나?)
- 화폐 예제의 Dollar, Franc 클래스를 보자, 중복 코드들을 모두 Money 클래스로 추상화하고 결국엔 하는 일이 없어 폐기처분된다.
- 있으면 좋을 것 같은 테스트를 작성하라
- 그렇게 하지 않으면 이가 나빠진다. (p79)
- 테스트를 보다 더 견고하게 만들고 개발자에게 자신감을 줄 것 같다.
- assertTrue(sum instanceof Money); ???
- 다음은 교재 16장 말미에 있는 테스트다.테스트12345
@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의 객체가 될 수 있는가??
- 테스트를 통과시키려면??
- 다음은 교재 16장 말미에 있는 테스트다.
'공부 > tdd' 카테고리의 다른 글
Spring 프레임워크의 도움을 받아 테스트하기 (프레임워크 의존성 제거) (0) | 2014.04.20 |
---|---|
xunit example 실습 (0) | 2014.04.18 |
3부 테스트 주도 개발 패턴 (0) | 2014.04.17 |
1주차 (0) | 2014.03.26 |
[TDD] Mock 객체 (0) | 2014.03.07 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 게임
- JQuery
- 오라클
- 졸업작품
- 아두이노
- 충북대
- 데이터베이스
- 이론
- 메모장
- ERP
- 안드로이드
- jsp
- SVN
- 청주
- 파이썬
- 배열
- HTML
- 정보
- 잡담
- SQL
- 클래스
- 프로젝트
- CSS
- 자바스크립트
- 알고리즘
- 도전과제
- 소켓
- 자바
- 정렬
- db
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함