2013-05-21 4 views
2

이것은 IoC 컨테이너를 사용할 때 일반인이 생성자를 만드는 방법에 대해 약간 난해한 질문입니다. 저는 Java, Guice, Junit4를 사용하고 있습니다. 그러나이 질문이 좀 더 일반적이라고 확신합니다.투입된 생성자, 단위 테스트 및 모범 사례

Guice 문서의 모범 사례에 따르면 "Keep constructors as hidden as possible"이라고되어 ​​있습니다. 이것은 제가 꽤 동의하는 것입니다. 그래서 제 생성자를 비공개로 만들고 Guice에 의지하여 인스턴스화하게되어 기뻤습니다.

그러나 클래스와 단위 테스트를 조롱하는 데 문제가 있습니다. 모든 생성자가 private 인 경우, 어떻게 유닛 테스트에서 무언가를 인스턴스화하고 조롱 된 의존성을 전달할 수 있습니까? 모든 유닛 테스트를위한 새로운 Guice 모듈을 만드는 것이 과도한 것 같습니다. 분명히, 나는 그 생성자를 실제로 공개해야만한다.

DI가 단위 테스트와 결합되었을 때 DI가 유용하다는 점을 감안할 때 Guice 문서의 생성자를 실제로 실수로 숨겨 두는 것에 대한 모범 사례는 무엇입니까?

답변

5

동일한 문서에서 자세한 내용을 읽어보십시오. 이는 생성자에게 기본 액세스 권한을 제공하는 것을 의미합니다. 그런 다음 단위 테스트를 같은 패키지에 넣으십시오.

public, protected 또는 private이 지정되지 않으면 기본 액세스가 제공됩니다. 당신이 참조 문서에서

:

보정으로, 단순히 모두 구현 클래스의 가시성을 제한하고, 자신의 생성자.

  • 직접 인스턴스화 수단
+0

뜨아 통해 클래스 테스트

  • 부 동일한 패키지 모듈 내의 클래스를 결합 :이 용이 전형적 패키지 개인은 모두 바람직 코스. 바보 인 것에 대해 유감스럽게 생각합니다. – saltyseadog

  • 관련 문제