나는이처럼 보이는 방법을 말할 수 있습니다 호출합니다. parseFoo2는 parseFoo가 일부 작업을 완료하는 데 도움이되는 도우미 메서드입니다. parseFoo 메소드를 테스트하려고합니다. 나는 대중 방법을 테스트 할 수 있기 때문에 내가 인스턴스 메소드를 지정할 수있는 방법 같은 parseFoo2 동안 그 개인 메서드 호출의 반환 값을 지정할 수 있습니다 EasyMock에있는 사람이EasyMock에 기대 개인 방법은
EasyMock.createMock(...);
anObject.expect(...).andReturn(...);
와 개체에 대한이 호출,하지만 난 개인적인 방법으로 들어가서 내부의 구현을 테스트 할 필요가 없다.
감사합니다.
이 답변은 너무 절대적입니다. 개인적 방법에는 테제되어야하는 내부 계약이 없다는 철학적 관점이 필요합니다. 이 메소드가 클래스의 여러 위치에서 사용되면 메소드를 작동 패턴으로 유지해야한다는 점에서 공용 메소드와 같습니다. 또한 최상위 메소드를 테스트하는 2-3 개의 로직 경로가있는 여러 메소드 (모두 private)를 호출하는 메소드가 매우 복잡해집니다. 체크인 할 때 실패 할 복잡한 테스트보다 더 나쁜 것은 없습니다. :) 나는 종종 가끔 바리케이드에 예측 가능한 비용을 자주 선호한다. – Gus
@Gus, 나는 동의하지 않는다. 실용적인 관점에서 보면, 세밀한 방법으로 개인 메소드를 테스트하면 코드를 쉽게 리팩토링 할 수 없게됩니다. 복잡성이 커지면 별도로 테스트해야하는 부분을 고려해야합니다. 이 경우 수업을 고려해야합니다. 필자는 철학적 관점에서 볼 때 클래스의 개인 섹션은 테스트해야하는 유닛이 아니라고 주장합니다. 구현 세부 사항이며 테스트는 내부 동작이 아닌 테스트중인 객체의 요구 사항을 반영해야합니다. – Vitaliy
내부의 (개인적인) 논리를 조롱하는 것이 매우 복잡하고 테스트의 요점을 놓치는 경우와 같이 개인적인 방법을 조롱해야 할 때가 있습니다. 그러나 이러한 경우는 비교적 드물며 다른 설계 흐름을 가리 킵니다. 에 관계없이 OP의 사용 사례에는 해당하지 않습니다. – Vitaliy