TDD 란?

먼저 테스트를 하고 그다음에 구현하는 방식.

 

테스트를 먼저 작성하고 테스트에 실패하면
테스트를 통과 시킬 만큼 코드를 추가하는 과정을 반복하면서
점진적으로 기능을 완성해 나가는 방식을 추구한다.

 

TDD 기본흐름 예시

덧셈 기능을 검증하기 위한 테스트

 

CalculatorTest.java

package chap02;

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;

public class CalculatorTest {
    @Test
    void plus() {
        int result = Calculator.plus(1, 2);
        assertEquals(3, result);
    }
}

 

 

step 1 ) 클래스 생성하고 0을 리턴하는 plus() 메서드를 추가

Calculator.java

package chap02;

public class Calculator {
    public static int plus(int a1, int a2) {
        return 0;
    }
}

 → CalculatorTest.java 실행 → return 값이 0 이여서 테스트 실패 

 

step 2 ) 테스트를 통과하기 위해 3 을 return 

Calculator.java

package chap02;

public class Calculator {
    public static int plus(int a1, int a2) {
        return 3;
    }
}

 → CalculatorTest.java 실행 → 테스트 성공

 

step 3) 추가 검증코드를 추가

CalculatorTest.java

package chap02;

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;

public class CalculatorTest {
    @Test
    void plus() {
        int result = Calculator.plus(1, 2);
        assertEquals(3, result);
        assertEquals(5, Calculator.plus(4, 1));
    }
}

 

Calculator.java

package chap02;

public class Calculator {
    public static int plus(int a1, int a2) {
        return a1 + a2;
    }
}

 → CalculatorTest.java 실행 → 테스트 성공

+ Recent posts