방금 구체적인 클래스를 조롱하는 것이 권장되지 않는 몇 가지 이유를 설명하는 "Growing Object-Oriented Software"책을 읽었습니다.
MusicCentre 클래스의 단위 테스트 샘플 코드는 다음과 같습니다.
public class MusicCentreTest {
@Test public void startsCdPlayerAtTimeRequested() {
final MutableTime scheduledTime = new MutableTime();
CdPlayer player = new CdPlayer() {
@Override
public void scheduleToStartAt(Time startTime) {
scheduledTime.set(startTime);
}
}
MusicCentre centre = new MusicCentre(player);
centre.startMediaAt(LATER);
assertEquals(LATER, scheduledTime.get());
}
}
그리고 그의 첫 번째 설명 :
이 접근법의 문제점은 오브젝트 간의 관계를 내재적으로 유지한다는 것입니다. 모의 객체를 이용한 테스트 주도 개발의 목적은 객체 간의 관계를 발견하는 것임을 분명히 알았기를 바랍니다. 하위 클래스를 작성하면 도메인 코드에 객체의 메소드만이 그러한 관계를 보이게 할 것이 없습니다. 따라서이 관계를 지원하는 서비스가 다른 곳과 관련이 있는지 확인하기가 어려워 다음에 수업에 참여할 때 분석을 다시 수행해야합니다.
그가 말할 때 그가 무엇을 의미하는지 정확히 알 수 없습니다.
따라서이 관계를 지원하는 서비스가 다른 곳과 관련이 있는지 확인하기가 어려워 다음에 수업에 참여할 때 분석을 다시 수행해야합니다.
서비스가 MusicCentre
의 메소드에 해당한다는 것을 이해합니다 startMediaAt
.
"어딘가에"는 무슨 뜻입니까?
전체 발췌문은 다음과 같습니다. http://www.mockobjects.com/2007/04/test-smell-mocking-concrete-classes.html