2011-03-21 2 views
0

unittesting하기 쉬운 코드를 작성하고 동시에 데이터를 캡슐화합니까?모든 필드 또는 좋은 apock을 조롱

예를 들어 unittest 클래스를 원한다면 모든 필드에 getters와 setter를 선언합니다. 그렇지 않으면 내가 mock을 주입 할 수 없습니다. 다른 한편으로는 정말 필요한 공개 메소드가있는 정말 좋은 API를 가진 클래스를 작성하고 싶습니다.

나는 당신이 나를 이해한다고 믿습니다.

답변

1

클래스에 조롱이 필요한 공동 작업자가있는 경우 생성자 또는 설정자를 통해 어딘가에서 가져옵니다. 그래서 그러한 것들을 갖는 것은 디자인 문제가 아닙니다.

하지만 자연스럽게 API의 일부가 아니라면 모든 게터가 없습니다. 테스트중인 객체의 관찰 된 동작을 테스트해야합니다. 즉, 공개 API를 통해 자연스럽게 얻을 수있는 것을 의미합니다.

개발자가 내부 상태를 테스트 할 수 있도록 모든 것을 공개하기로 한 프로젝트에서 한 번 일했습니다. 그게 .. 음 ... 재미 있었어.