TDDwith JUnit
Test
Driven
Development
Junyoung Lee
대개
 우리는
개발을
 하고
테스트를
 합니다.
잘
 돌아가나
?
개발 기간이 길어질 수록 개발자의 목표의식이 흐려진다
작업이 길어질 수록 확인이 어렵다
개발자의 집중력이 필요해진다
논리적인 오류를 찾기 어렵다
코드의 사용 방법과 변경 이력을
개발자의 기억에 의존하게 된다
귀차니즘의 증가로 테스트를 간소화 하게 된다
코드 수정 시 정상 동작을 보장하기 어렵다
테스트를 해보려면 변경 등의 선행 작업이 필요
회귀 테스트가 희귀 테스트가 되기 쉽다
개발자의 노동력을 필요로 하게 된다
- 테스트 주도 개발 TDD 실천법과 도구 중
TDD에서는
테스트를
 작성하고,
개발을
 합니다.
코드도
 없는데
 무슨
 테스트를
 먼저?
TDD
Need
무엇을 테스트 할 것인가?
Test
실패하는 테스트 작성
Code
테스트를 통과하는 코드 작성
Refactoring
코드의 중복 제거
TDD Flow
Simple Code
Ron jeffries said “Clean code that works”
예측 가능한 개발 방법이다
끊임없이 발생할 버그에 대해 걱정하지 않고
일이 언제 마무리 될 지 알 수 있다
코드가 가르쳐주는 모든 교훈을 학습할 기회를 갖게 된다
당신이 만든 소프트웨어는 사용자의 삶을 향상시켜 준다
동료들이 당신을 존경할 수 있게 해준다
당신 또한 동료들을 존경할 수 있게 된다
작성하는 동안 기분이 좋다
- 테스트 주도 개발 중
Getting
 started
 TDD
with
 JUnit
Eclipse를 사용할 겁니다.
JUnit 라이브러리를 받습니다.
프로젝트의 빌드 패스에 추가합니다.
시작해 봅시다.
환경 설정
이 정도는 스샷 없어도 되겠쪙?
두 날짜의 일 수 차이를 구하는
프로그램을 작성해 봅시다.
20140314 - 20140310 = 4
예제 출처 - https://wikidocs.net/224
테스트
 케이스
 작성
1. 두 날짜의 차이 일 수를 구한다.
2. 특정 일자의 총 일 수를 구한다.
3. 전년도까지의 총 일수를 구한다. 
4. 전달까지의 총 일수를 구한다.
5. 해당 일자까지의 총 일 수를 구한다.
테스트
 코드
 작성
public class SubDateTest extends TestCase{
	 public static void main(String[] args) {
	 	 junit.textui.TestRunner.run(SubDateTest.class);
	 }
	
	 public void testGetYearDay() {
	 	 assertEquals(0, SubDate.getYearDay(1));
	 	 assertEquals(365, SubDate.getYearDay(2));
	 }
}

Tdd with JUnit 1