프로그래밍/TDD
tdd 2.계산기 만들기(빼기)
Baesj
2021. 9. 17. 12:35
1. 기능을 검증하는 테스트 코드 작성
@Test
void 빼기() {
//given
//when
//then
}
2. 메서드의 이름, 파라미터, 정적 메서드, 인스턴스 메서드, 클래스 이름 등을 고민하고 적용하기
- 빼기니깐 메서드 이름을 subtract로 하자
@Test
void 빼기() {
//given
int a = 10;
int b = 5;
//when
int result = Calculator.subtract(a, b);
//then
Assertions.assertThat(result).isEqualTo(5);
}
3. 메서드가 없으므로 메서드를 추가하자
public static int subtract(int a, int b) {
return 0;
}
4. 테스트를 실행해보자

실패하게 된다
5. 결과값이 다르므로 리턴값을 수정해보자
public static int subtract(int a, int b) {
return 5;
}
6. 테스트를 실행해보자

성공하게 된다
7. 다른 테스트를 추가해보자
@Test
void 빼기() {
//given
int a = 10;
int b = 5;
int a2 = 20;
int b2 = 30;
//when
int result = Calculator.subtract(a, b);
int result2 = Calculator.subtract(a2, b2);
//then
Assertions.assertThat(result).isEqualTo(5);
Assertions.assertThat(result2).isEqualTo(-10);
}
8. 테스트를 실행해보자

실패하게 된다
9. 리턴값을 수정해보자
public static int subtract(int a, int b) {
if (a == 20 && b == 30) {
return -10;
}
return 5;
}
10. 테스트를 실행해보자

성공하게 된다
11. 테스트를 추가해보자
@Test
void 빼기() {
//given
int a = 10;
int b = 5;
int a2 = 20;
int b2 = 30;
int a3 = 200;
int b3 = 100;
//when
int result = Calculator.subtract(a, b);
int result2 = Calculator.subtract(a2, b2);
int result3 = Calculator.subtract(a3, b3);
//then
Assertions.assertThat(result).isEqualTo(5);
Assertions.assertThat(result2).isEqualTo(-10);
Assertions.assertThat(result3).isEqualTo(100);
}
12. 테스트를 실행해보자

실패하게 된다
13. 리턴값을 범용적으로 만들자
public static int subtract(int a, int b) {
return a - b;
}
14. 테스트를 실행해보자

성공하게 된다
15. 테스트를 추가하고 실행해보자
@Test
void 빼기() {
//given
int a = 10;
int b = 5;
int a2 = 20;
int b2 = 30;
int a3 = 200;
int b3 = 100;
int a4 = 1000;
int b4 = 3500;
//when
int result = Calculator.subtract(a, b);
int result2 = Calculator.subtract(a2, b2);
int result3 = Calculator.subtract(a3, b3);
int result4 = Calculator.subtract(a4, b4);
//then
Assertions.assertThat(result).isEqualTo(5);
Assertions.assertThat(result2).isEqualTo(-10);
Assertions.assertThat(result3).isEqualTo(100);
Assertions.assertThat(result4).isEqualTo(-2500);
}

성공하게 된다
쉬운거부터 점진적으로 늘려가며 기능을 완성하자