본문 바로가기

Language/TDD

OOP 객체 액션 요구사항 목적 비디오 가게에서 고객이 대여하는 비디오의 대여정보를 조회할 수 있는 프로그램을 작성한다. 요구사항 고객은 이름을 갖는다.고객은 한번에 여러 개의 비디오를 대여할 수 있으나 각각의 대여기간은 다를 수 있다.비디오는 영화, 스포츠, 다큐먼터리의 세 종류가 있다.각 비디오는 독립적인 일일 대여요금을 갖는다.영화는 대여기간이 2일 이상되면 3일째부터는 대여요금이 1/2로 할인된다.다큐먼터리는 3일 이상 대여하면 4일째부터 1/3로 할인된다.스포츠는 장기대여 할인이 없다.비디오 1개 대여할 때마다 보너스 포인트는 1포인트씩 올라간다. 단, 스포츠는 2포인트씩 올라간다.과거의 대여기록을 보유하고 있을 필요는 없으나 고객이 얻은 총 보너스 포인트 정보는 알고 있어야 한다.고객의 현재 대여정보를 구할 수.. 더보기
TDD 우분투에서 phpunit 설치 참고 녹풍 : [우분투] PHPunit 설치와 기본 경로 녹풍 : 이클립스에서 PHPUnit(PHP 단위 테스트) 사용하기 sudo apt-get install phpunit 아래 위치에서 2개의 파일을 다운로드 합니다. 받기:1 http://ftp.daum.net/ubuntu/ lucid/universe php-benchmark 1.2.7-4 [13.5kB] 받기:2 http://ftp.daum.net/ubuntu/ lucid/universe phpunit 3.4.5-1 [310kB] 실행파일 설치 위치는 /usr/bin/phpunit if (strpos('@php_bin@', '@php_bin') === 0) { set_include_path(dirname(__FILE__) . PATH_SEPARAT.. 더보기
TDD jUnit4 비교표현확장: Hamcrest Hamcrest : 비교표현확장 JUnit 4.7, 4.8 기본 탑재되어 있는 Hamcrest 버전은 1.1 core 입니다. Hamcrest(햄크레스트)는 jMock이라는 Mock 라이브러리 저자들이 참여해 만들고 있는Matcher 라이브러리입니다. 테스트 표현식을 작성할 때 좀 더 문맥적으로 자연스럽고, 우아한 문장을 만들 수 있게 도와줍니다. 개발자만이 읽을 수 있는 프로그램밍 언어라라는 느낌보다 좀 더 문장체에 가까운 느낌으로 넓은 범주의 사람들이 함께 이해할 수 있는 형태로 만들어줍니다. 현재 Hamcrest는 Java 이외에도 C++, Objective-C, Phthon 그리고 PHP 버전으로도 포팅되어 있습니다. Matcher 라이브러리: 필터나 검색등을 위해 값을 비교할 때 좀 더 편리하게.. 더보기
TDD jUnit4 특징 @Test jUnit3 이전에는 메소드 이름을 test로 시작해야한다는 규칙이 있었지만 jUnit4 이 후에는 @Test 애노테이션만 붙이면 테스트 메소드로 인식됩니다. @BeforeClass @AfterClass @Before @After 예외 테스트테스트 메소드내에서 해당 예외가 발생하지 않는다면 테스트 메소드를 실패로 간주합니다. [code java] // jUnit3 public void testException(){ String value = "a103"; try{ System.out.println(Integer.parseInt(value)); assertTrue(false); } catch ( NumberFormatException nfe){ assertTrue(true); } }[/code].. 더보기
TDD 실습 - 은행계좌(Account) 클래스 만들기 은행계좌 클래스 * 첫번째 질문 구현해야 할 기능을 파악하고, 목록을 작성한다. 계좌 생성 기능을 구현하기 위한 최초의 테스트 케이스를 만들고 실패하는 모습을 확인한다. 작성하고자 하는 메소드나 기능이 무엇인지 선별하고, 작성 완료 조건을 정해서 실패하는 케이스를 작성하는것. 클래스 설계서와 같은 산출물이 있는 경우라면, 크게 고민할 것 없이 메소드 외양부터 만들기 시작. 이때 리턴 타입은 기본 초기값(null, 0 등) 위주로 설정해놓으면 편한다. 이런 방식을 클래스 스켈레톤(skeleton) 구현이라고 부른다. 업무전문가나 설계자로부터 넘겨받은 산출물이 없다면 개발에 필요한 내용을 개발자가 스스로 머릿속에서 떠올려야 한다. 이 예제에서는 설계문서 없이 곧바로 개발한다. 라고 가정. * 기능요구사항 &.. 더보기
TDD 개발 진행방식 질문(Ask) : 테스트 작성을 통해 시스템에 질문한다. (테스트 수행 결과는 실패) 응답(Respond) : 테스트를 통과하는 코드를 작성해서 질무에 대답한다.(테스트 성공)정제(Refine) : 아이디어를 통합하고, 불필요한 것을 제거하고, 모호한 것은 명확히 해서 대답을 정제한다. (리펙토링)반복(Repeat) : 다음 질문을 통해 대화를 계속 진행한다. TDD를 이용한 개발은 크게 '질문 > 응답 > 정제'라는 세 단계가 반복적으로 이루어진다. 참고 : 테스트 주도 개발 고품질 쾌속개발을 위한 TDD 실천법과 도구 30-31p 더보기