입력값 검증기 코드 작성에서 TDD를 적용해보았다.
순서는 다음과 같다.
1. 테스트 코드 작성 (결과 : 실패)
2. 검증기 코드 작성
3. controller에서 검증기 호출
4. 테스트 코드 실행 (결과 : 성공) - 실패 시 2번으로 회귀
왜 테스트 코드를 먼저 작성하나요? 🙋🏻♀️
지금 작성한 코드가 그 테스트 케이스에 영향을 줬다는 것을 명확히 하기 위해서이다.
예를 들어, 아래와 같이 값은 틀렸는데 테스트가 통과라면, 테스트 케이스가 잘못된 것이다.

지금은 결과가 달라서 확인이 쉽지만, 우연치않게 결과가 10이 나온다면 잘못된 테스트 케이스라는 것을 발견하기 어려울 것이다.
그래서 먼저 테스트케이스가 제대로 실패를 하는지 확인하고, 코드 개발을 시작했다.
1) 테스트 케이스 작성(결과:실패)
나는 시작 문자에 "숫자 또는 //로 시작하는 지"를 검증하려 한다.
이를 만족하지 않으면 에러를 던지는 테스트 케이스를 작성하였다.

2) 검증기 코드 작성
정규표현식을 사용하여 숫자나 //로 시작하는지 확인하는 검증기 코드를 작성한다.
// exception/Validator.java
// 사용자 입력값이 숫자 또는 //로 시작하지 않으면 에러처리
public static void checkFirst(String inputMessage){
Pattern pattern=Pattern.compile("^[0-9]|//");
Matcher matcher=pattern.matcher(inputMessage);
if (!matcher.find()){
throw new IllegalArgumentException(ErrorMessage.INVALID_INPUT_FORMAT.getMessage());
}
}
3) controller에서 검증기 호출
작성한 검증기 코드를 controller에서 호출한다.
// CalculatorController.java
// 시작 문자 확인
Validator.checkFirst(inputMessage);
4) 테스트 코드 실행 (결과 : 성공)
이제 검증기 코드로 예외처리가 잘 되었는지 테스트를 확인한다.
만약 여기서 실패한다면 다시 2번과 3번을 수정해서 통과될 때까지 고쳐야 한다.

다른 입력값 검사도 위와 같은 과정을 거쳐 TDD를 적용해보았다.
테스트 케이스를 먼저 작성하는 과정에서 무엇을 예외 처리하고 어떤 요구사항을 만족해야하는지 명확해졌다. 또한 지금 작성한 검증기 코드로 해당 테스트가 통과했다는 사실이 뚜렷하니, 구현한 코드에 대한 신뢰성도 높아졌다.
TDD를 해보고 싶다면 입력값 검사로 먼저 TDD의 사이클을 경험해보는 것도 좋을 것 같다.
입력값 검사가 맞다 아니다를 빠르게 파악할 수 있고 단위가 작아서, 가장 먼저 시도해볼 수 있는 방법이다.
다음번에는 기능 단위에서 TDD를 적용해봐야겠다.
'우테코' 카테고리의 다른 글
| [우테코] 프리코스 2주차 자동차 경주 회고 (0) | 2025.10.27 |
|---|---|
| [우테코 2주차] 개발 과정에서 디버깅 적용해보기 (0) | 2025.10.27 |
| [우테코 2주차] 디버깅으로 입출력 예외 분석하기 (0) | 2025.10.25 |
| [우테코] 프리코스 1주차 계산기 회고 (0) | 2025.10.20 |
| 우테코 지원을 시작으로 (1) | 2025.10.14 |