내 개발 팀이 Mockito을 사용하고 있으며 '최종'으로 정의 된 클래스가 있습니다. Joshua Bloch의 Effective Java와 SO 스레드 When to use final에서 모든 클래스가 최종 수정자를 사용해야한다고 읽었습니다. 스레드에서 약간의 불일치가 있었지만 상속이 의미가 없으면 클래스 구성을 강제하는 아이디어에 동의합니다.Java 모범 사례가 Mockito와 충돌 할 때 수행 할 작업
클래스에 'final'한정자가 필요하지 않은 Mockito와 같은 테스트 프레임 워크를 사용하여 클래스를 테스트하려면 어떻게해야합니까? 다른 누군가가 개발 중에 비슷한 문제가 발생하기를 바랍니다. 개발팀이 어떤 결의안을 발표 했습니까?
JMock을 사용하거나 테스트 할 클래스에서 'final'수정자를 제거하는 것과 같은 두 가지 분명한 해답이 있지만 JUnit 외에도 하나의 외부 테스트 프레임 워크를 고수하고 다른 사람을 설득하기가 어려울 수도 있습니다 개발자가 '최종'수정자를 제거합니다.
감사합니다.
모든 클래스를 '최종'으로 만드는 것이 가장 좋은 방법은 아닙니다. 효과적인 Java를 읽은 이후로 꽤 오랜 시간이 걸렸지 만 링크 된 스레드의 합의는 분명히 그 중 하나를 의미하지는 않습니다. 클래스를 final로 표시해야 확장해야하는 이유가 있음을 나타낼 수 있습니다. 이유가 없으면 불필요한 복잡성이 추가됩니다. 또한 도로를 어딘가에 확장해야 할 필요가 있다고 생각하면 원래 클래스의 코드를 변경하여 열기/닫기 원칙을 위반하는 새 클래스를 작성해야합니다. – Nate