프로그래밍/TDD
tdd 1.계산기 만들기(더하기)
Baesj
2021. 9. 16. 16:20
1. 기능을 검증하는 테스트 코드 작성
import org.junit.jupiter.api.Test;
public class CalculatorTest {
@Test
void 더하기() {
//given
//when
//then
}
}
2. 메서드의 이름, 파라미터, 정적 메서드, 인스턴스 메서드, 클래스 이름 등을 고민하고 적용하기
- 계산기이니깐 클래스이름을 Calculator로 하자
- 더하기이니깐 메서드 이름을 add로 하자
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
public class CalculatorTest {
@Test
void 더하기() {
//given
int a = 10;
int b = 20;
//when
int result = Calculator.add(a, b);
//then
Assertions.assertThat(result).isEqualTo(30);
}
}
3. 클래스가 없으므로 만들자
public class Calculator {
public static int add(int a, int b) {
return 0;
}
}
4. 테스트를 실행해보자
예상되는 값이 30인데 0이 나왔으므로 테스트가 실패하게된다.
리턴값을 30으로 바꾸도 다시 실행해보자
성공했다
5. 다른 값도 추가해보자
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
public class CalculatorTest {
@Test
void 더하기() {
//given
int a = 10;
int b = 20;
int a2 = 100;
int b2 = 50;
//when
int result = Calculator.add(a, b);
int result2 = Calculator.add(a2, b2);
//then
Assertions.assertThat(result).isEqualTo(30);
Assertions.assertThat(result2).isEqualTo(150);
}
}
6. 테스트를 실행해보자
테스트가 실패하게 된다.
7. 클래스의 리턴값을 수정하자
public class Calculator {
public static int add(int a, int b) {
if (a == 10 && b == 20) {
return 30;
}
return 150;
}
}
8. 테스트를 실행해보자
테스트가 성공하게 된다
9. 테스트를 추가해보자
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
public class CalculatorTest {
@Test
void 더하기() {
//given
int a = 10;
int b = 20;
int a2 = 100;
int b2 = 50;
int a3 = 35;
int b3 = 80;
//when
int result = Calculator.add(a, b);
int result2 = Calculator.add(a2, b2);
int result3 = Calculator.add(a3, b3);
//then
Assertions.assertThat(result).isEqualTo(30);
Assertions.assertThat(result2).isEqualTo(150);
Assertions.assertThat(result3).isEqualTo(115);
}
}
10. 테스트를 실행해보자
실패하게 된다
11. 클래스 파일을 수정해보자
public class Calculator {
public static int add(int a, int b) {
return a + b;
}
}
12. 테스트를 실행해보자
성공하게 된다
13. 테스트를 추가해보자
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
public class CalculatorTest {
@Test
void 더하기() {
//given
int a = 10;
int b = 20;
int a2 = 100;
int b2 = 50;
int a3 = 35;
int b3 = 80;
int a4 = 1;
int b4 = 2;
//when
int result = Calculator.add(a, b);
int result2 = Calculator.add(a2, b2);
int result3 = Calculator.add(a3, b3);
int result4 = Calculator.add(a4, b4);
//then
Assertions.assertThat(result).isEqualTo(30);
Assertions.assertThat(result2).isEqualTo(150);
Assertions.assertThat(result3).isEqualTo(115);
Assertions.assertThat(result4).isEqualTo(3);
}
}
14. 테스트를 실행해보자
성공하게 된다
이렇게 점진적으로 기능을 완성해가자