📖 ✏️
- TIL 시리즈에 작성된 글은 '매일 매일 학습한 지식 조각을 메모해 놓은 포스팅'입니다. 공유가 아닌 개인적인 학습 내용 기록을 목적으로 작성되었음을 알려드립니다.
- 그 외 시리즈에 작성된 공유 목적의 포스팅은 시간이 날 때마다 별도로 작성하고 있습니다. 주로, TIL 시리즈에 작성된 내용에서 특정 주제를 선정하고, 더 깊이 공부한 후 정리하여 작성합니다.
TDD => TFD(Test First Development) + 리팩토링
테스트 코드를 먼저 구현한다는 점과 리팩토링이 포함되는 개념이다.
작은 단위로 기능이 추가될 떄 마다 설계를 개선해 나가는 과정이다.
실패하는 테스트를 구현한다
테스트가 성공하도록 프로덕션 코드를 구현한다
프로덕션 코드와 테스트 코드를 리팩토랑헌더
1단계 - Util 성격의 기능이 TDD로 도전하기 좋다
2단계 - 테스트 가능한 부분에 대해 TDD로 도전
ex)
public BallStatus play(Ball ball) { if (ball.matchBallNo(ballNo)) { return BallStatus.BALL; } return BallStatus.NOTHING; } private boolean matchBallNo(int ballNo) { return this.ballNo == ballNo; }
분리 전
public Balls(List<Integer> answers) { List<Ball> balls = new ArrayList<>(); for (int i = 0; i < 3; i++) { balls.add(new Ball(i+1, answers.get(i))); } this.balls = balls; }
분리 후
public Balls(List<Integer> answers) { this.balls = mapBall(answers); } private List<Ball> mapBall(List<Integer> answers) { List<Ball> balls = new ArrayList<>(); for (int i = 0; i < 3; i++) { balls.add(new Ball(i+1, answers.get(i))); } return balls; }