프로그래밍/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);
    }

성공하게 된다

 

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