ConcreteService가 필자에게 필요한 유일한 비 테스트 구현이라고 가정합니다. 그것에 의존하는 객체를 테스트 할 수있는 목적을 위해서만 인터페이스를 추출하거나 메소드/속성 가상을 만들 수 있습니까? 그렇지 않으면 의존성 라인을 새롭게 만들어야합니다. 종속성 라인을 종속성 테스트 할 때마다 분기점까지 (내가 mock을 삽입 할 수있을 때까지)해야합니다.인터페이스를 테스트 용으로 만 사용해도 괜찮습니까?
2
A
답변
2
이것은 완전히 정상입니다.
테스트를 수행하지 않더라도 초기에 인터페이스를 도입 할 때 많은 이점이있을 수 있으며, 종종 선호하는 것이라고 말하고 싶습니다.
프로젝트 수명주기 초기 인터페이스를 코딩하면 ConcreteService를 호출하는 코드가 대신 인터페이스를 호출 할 수 있습니다. 그런 다음 새로운 서비스 구현을 도입하려는 경우 필요한 변경 량을 줄였습니다 그것을 사용하십시오.
1
디자인이 정확히 무엇인지 확실하지 않습니다. 어쨌든 추상화를 테스트 할 필요가있는 것처럼 들리면 인터페이스로 연결하는 것이 좋습니다.
관련 문제
- 1. 테이블을 계속 사용해도 괜찮습니까?
- 2. 일반적으로 스크립트에서 CDATA를 사용해도 괜찮습니까?
- 3. objc_SetAssociatedObject에서 값으로 비 ID 포인터를 사용해도 괜찮습니까?
- 4. preg_replace에서 £을 구분 기호로 사용해도 괜찮습니까?
- 5. HTML - 링크에 이미지 롤오버를 사용해도 괜찮습니까?
- 6. 하위 클래스가 인터페이스를 구현하는 것이 괜찮습니까?
- 7. iphone - Grand Central Dispatch의 보조 스레드에서 usleep을 사용해도 괜찮습니까?
- 8. CakePHP에서 Message blongsTo Attachment와 같은 "semantically reversed"연관을 사용해도 괜찮습니까?
- 9. 다른 용도로 <wikiname> 네임 스페이스를 사용해도 괜찮습니까? (mediawiki)
- 10. Rails가있는 프로덕션/개발 서버에 다른 OSes를 사용해도 괜찮습니까?
- 11. 사이트 최적화를 위해 이전에 css optimizers를 사용해도 괜찮습니까?
- 12. 많은 파일에서 Rijndael 암호화에서 정적 IV 값을 사용해도 괜찮습니까?
- 13. 아이폰 SDK 3.0 이후 사용자 정의 tableviewcell에 initWithFrame을 사용해도 괜찮습니까?
- 14. CFHost DNS 해결 - 동기식 API를 언제 사용해도 괜찮습니까?
- 15. 자바 스크립트 프롬프트 - 사용해도 괜찮습니까? 아니면 일부 브라우저에서 이상하게 작동합니까?
- 16. Textarea 대신 HTML 편집기 만 사용해도 안전합니까?
- 17. SoapExtensions은 ASP.NET 용으로 만 사용됩니다.
- 18. UIPanGestureRecognizer가 uiimageview 용으로 만 uiview 용으로 작업하고 있습니다.
- 19. 괜찮습니까?
- 20. 인터페이스를 지정하지 않고 윈저에 구성 요소를 등록해도 괜찮습니까?
- 21. Ruby 1.9에서 Rails 2.3을 사용해도 되나요?
- 22. Nose를 테스트 용으로 사용하는 유망한 Python 프로젝트
- 23. Wordpress : 특정 사용자 만 테스트 테마 사용
- 24. Perfom 웹 인터페이스를 통한 Python 단위 테스트
- 25. Java에서 인터페이스를 구현하는 모든 클래스 테스트
- 26. 외관 패턴, 괜찮습니까?
- 27. C++에서 한 줄로 2D 벡터를 초기화하는 데 생성자를 사용해도 괜찮습니까?
- 28. 레일에 중첩 된 자원과 얕은 자원을 모두 사용해도 괜찮습니까? 컨트롤러/뷰를 작성하는 방법?
- 29. DI 세계에서 괜찮습니까?
- 30. ComputedProperty를 사용해도 안전합니까?