허니몬의 IT 이야기/프로그래머, '코드 엔지니어'
채수원(http://blog.doortts.com/)님의 TDD 교육을 받고 와서, 마무리 짓지 못한 TDD로 자판기문제를 작성해보았다.

- 동전은 최소갯수로 반환한다.
- 500, 100, 50원 동전만 사용
- 지폐는 동전으로 반환하지 않는다.

짝 코딩(Pair Programming) 으로, 처음 대면한 분과 모니터를 바라보며 분석, 설계 와 코딩을 시작했다.
당시에는 서로 이런저런 이야기를 주고받으며 의견을 조율했지만, 서로가 생각하는(정확하게는 요구사항에 대한 인식) 바가 달라서 인지, 생각보다는 깔끔하게 정리되지 않았다. 처음으로 짝 코딩을 하면서(이전에도 알게모르게 해온 듯도 하다. 누군가의 코드를 봐주면서, 누군가에게 코드를 보여주면서 입력 중에 혹은 입력 중 생긴 오타나 오류에 대해서 찾는 작업을 해왔으니까) 이런저런 감흥을 지금에 와서야 느끼고 있다. ^^;

집에와서 다시 작성해본 ToDoList
- 입금된 금액을 저장한다. -> Ok
- 잔액을 보여준다. -> Ok
- 상품을 구매하면 입금액에서 상품액을 뺀 잔액을 보여준다. -> Ok
- 반환버튼을 누르면 잔액에 따라 1000, 500, 100, 50원의 잔액을 각각 반환한다. -> Ok
- 동전(500, 100, 50)은 최소갯수를 주도록 한다. -> Ok
- 반환 결과를 화면에 보여준다. -> returnMoney(); -> OK

<< 작성한 테스트코드 : TestVendingMachine.java >>

<< 작성한 자판기코드 : VendingMachine.java >>

TDD JUnit 통과