참조 : http://blog.jayfields.com/2008/02/state-based-testing.html

번역 및 요약 및 편역

테스트 대상이 되는 객체에 있는 여러 메소드들을 호출 한 뒤에 객체의 상태를 확인해보는 테스트 기법이다. 테스트 코드가 테스트 대상의 세부 구현 내역에 대해 보더 덜 상세하게 알아도 된다. 따라서, 테스트 대상이 되는 코드의 구현 내용이 바뀐다 하더라도 결과 상태만 같으면 해당 테스트 코드는 깨지지 않고 유지 된다.

사족

흠.. 확실히 EasyMock을 사용할 때는 테스트 대상이 참조하는 객체를 Mock으로 만들고 그 Mock이 어떻게 행동할지를 일일히 세부적으로 순서까지 맞춰가면서 결과값까지 예측, 혹은 녹화를 해줬어야 테스트가 동작을 했습니다. 그래서 테스트 대상이 되는 메소드가 혹시 해당 객체에서 다른 메소드를 호출하거나 호출 순서를 약간 조정하면 해당 테스트를 깨지는 사태가 종종 발생했습니다. 불편했죠. 테스트 만들기도 빡쌨고, 이런식의 코드로 어떻게 (순수) TDD를 하나 싶었습니다. '차라리 이럴바엔 바로 구현을 하지... 테스트 코드를 왜 만들어...' 라는 생각이 절로 나는거죠.

그런데 위의 얘기 처럼 상태 기반으로 테스트를 쉽게 작성할 수만 있다면, Mockito가 그런식 으로 테스트를 작성하기 쉽게 해준다면, 좀 더 시간을 들여서 익혀볼 만 한 것 같습니다. 흠.. 상태 기반 테스트라~ 어떻게 작성해야 하나.. Mockito로 작성된 테스트 코드를 보고 싶네요.