강의

멘토링

로드맵

Inflearn Community Q&A

jinan159's profile image
jinan159

asked

Spring Core Principles - Basic Edition

What is good object-oriented programming?

단위테스트에서 인터페이스 vs 구현체

Written on

·

1.6K

1

안녕하세요! 강의 잘 듣고있습니다.

다형성에 대한 설명을 듣다가, 테스트 코드를 작성할때 인터페이스를 테스트하는게 좋은지, 구현체를 테스트하는게 좋은지 궁금하여 질문 드립니다.

짧은 식견이지만, 제가 생각해본 바로는 다음과 같습니다.

인터페이스로 테스트 하는것이 더 효율적이다
인터페이스의 구현체가 여러개라면 내부 구현이 다르더라도, 같은 결과를 내야한다고 생각합니다. 그래서 구현체로 테스트를 작성하면 각 구현체의 테스트 코드는 비슷한 코드들이 많이 나올것이라 생각합니다. 하지만 인터페이스로 단위 테스트를 작성한다면 테스트 코드에서 구현체만 바꿔가며 테스트할 수 있기 때문에 효율적이라 생각합니다.

하지만, 구현체에만 추가된 인테페이스에 없는 기능이 있다면 이는 구현체의 단위테스트로 구현해야한다.

라는 것이 저의 생각입니다.

그래서 어떤 방법이 더 좋은 방법인지, 혹시 실무에서는 어떤 방법이 더 선호되는지 궁금하여 질문 드립니다.

감사합니다!!

 

 

springoop

Quiz

51% of people got it wrong. Give it a try!

What was one of the major difficulties of using EJB in the Java enterprise development environment in the early 2000s?

Very low adoption cost

Simple and fast development

Complex setup and high reliance on technology

Excellent flexibility and scalability

Answer 1

3

안녕하세요. 김진완님, 공식 서포터즈 David입니다.

.
한 컨퍼런스에 언급된 내용을 공유합니다.

https://github.com/david-learner/java-study/tree/master/2018OKKYCON#%EC%84%A4%EA%B3%84

"테스트를 할 때 구현(implementation)이 아니라 설계(interface)에 맞춰야 한다"

 

다만, 객체가 인터페이스에 의존하지 않고 특정(구체적인) 구현체에 의존하고 있다면 해당 구현체를 테스트해야 하는 일이 있을 수 있습니다.

.
감사합니다.

 

 

jinan159님의 프로필 이미지
jinan159
Questioner

감사합니다! 정독해보겠습니다 :)

jinan159's profile image
jinan159

asked

Ask a question