통합 테스트 케이스
지뢰 찾기 게임 시나리오를 관통하는 테스트가 필요하다는 생각이 든다.
- 단위 테스트에 집중하다 보니 전체적인 그림을 보는데 한계가 있다.
1 by 1
- grid의 square가 mine이 아닐 경우 open하면 win
- open하지 않은 모든 square가 mine일 경우 win
2 by 2
- mine이 0개인 경우 square 중 하나를 open 하면 win
- mine이 1개인 경우 mine이 아닌 square를 open 하면 win
- mine이 1개인 경우 mine squre를 open 하면 lose
3 by 3
- mine이 2개인 경우
스터디 진행 내용
- 1 by 1에 대한 시나리오를 만들고 테스트할 필요가 있을까?
- 처음부터 3 by 3 이상으로 할 수도 있겠지만 1 by 1부터 시작하는 것이 작은 것부터 단계적으로 접근할 수 있다.
- 테스트 하나에서 너무 많은 테스트를 진행하려는 경향이 있다.
- TDD의 흐름을 따라가는데 어려움을 느낀다. 지속적인 연습이 필요하다.
- 도메인 지식이 있는 경우 초반 설계가 효과가 있다. 하지만 도메인 지식이 없는 경우 초반에 빠른 삽질이 의미가 있다.
- 초반 삽질을 통해 대략적인 설계를 잡으면서 구현한 후 이 소스 코드를 버리고 다시 한번 도전해 본다.
- 현재와 같이 TDD 형식으로 구현하지 않았다면 어떤 모습의 소스 코드가 나왔을까?
설계개선
- Model(현재 상태)
- Grid
- Row
- Square
- View.render(Grid grid) : grid의 현재 상태를 전달하면 다양한 View로 출력
- Controller : View와 interface할 요소들 지정
- 앞의 Model과 View를 연결해 주는 역할