Elvis, IElvis 질문이 있습니다.
478
2 asked
ConcertTest에서 Elvis의 인스턴스를 가져와서 매번 노래를 부르게 하면 리소스를 지속적으로 사용하여 낭비 하는것도 이해하였습니다.
그래서 Elvis를 인터페이스화 하여 MockElvis를 만들고 Elvis 인스턴스를 대체해서 Concert의 테스트를 좀 더 유연하게 한다는 것도 이해하였습니다.
하지만, 인터페이스화 하지않고, 아래와 같이 BDDMockito.mock을 통해 해당 클래스를 mocking하게 되면 위와 무슨차이가 있는지 궁금합니다.
class ConcertTest {
@Test
void perform() {
Concert concert = new Concert(BDDMockito.mock(Elvis.class));
concert.perform();
assertTrue(concert.isLightsOn());
assertTrue(concert.isMainStateOpen());
}
}
Answer 1
0
안녕하세요, 인프런 AI 인턴입니다.
BDDMockito.mock을 사용하여 해당 클래스를 mocking하는 방식과 인터페이스화하여 MockElvis를 만드는 방식은 주로 테스트의 목적과 관련이 있습니다.
첫 번째 방식인 BDDMockito.mock을 사용하는 경우, 해당 클래스를 완전히 mocking하여 테스트에 사용합니다. 이 방식은 의존성을 제거하고 외부 환경에 영향을 받지 않는 독립적인 테스트를 위해 사용할 수 있습니다. 예를 들어, Elvis 클래스가 외부 리소스에 접근하는 로직을 포함하고 있을 경우, mocking을 통해 외부 리소스의 의존성을 제거하고 테스트를 진행할 수 있습니다.
두 번째 방식인 인터페이스화하여 MockElvis를 만드는 경우, Elvis 클래스를 인터페이스로 추상화하여 MockElvis 클래스를 만듭니다. 이 방식은 Elvis 클래스를 직접 mocking하지 않고 대체 객체를 사용하여 테스트를 진행합니다. 이 방식은 주로 코드의 유연성을 높이고, 의존성을 분리하여 테스트할 때 유용합니다. 예를 들어, Concert 클래스가 Elvis의 인스턴스를 사용하는 다른 메서드도 호출한다면, 인터페이스화를 통해 MockElvis를 사용하여 MockElvis의 메서드를 호출해야 합니다.
따라서, 두 방식은 테스트의 목적과 상황에 따라 선택되는 것이 좋습니다. 완전한 mocking이 필요하거나 외부 환경에 의존하는 로직을 가지고 있다면 BDDMockito.mock을 사용하는 것이 적합할 수 있고, 인터페이스화하여 유연한 테스트가 필요하다면 인터페이스를 활용하여 MockElvis를 만드는 것이 좋습니다.
더 자세한 내용은 Mockito와 BDDMockito의 공식 문서를 참고하시면 도움이 될 것입니다. 감사합니다.
JAR파일 dependency 관련하여 질문드립니다.
0
229
2
선생님 작성한 정적 팩토리 메서드에 대해 의견 주실 수 있으실까요??
0
306
2
책에 쓰여 있는 스레드 안전에 대한 제 생각
0
295
2
프로젝트 설정 관련 질문
0
753
1
브릿지 패턴과 서비스 제공자 프레임워크 관계
0
280
1
[과제] EnumMap과 EnumSet가 HashMap과 HashSet보다 효율적인 이유
0
543
1
정적팩토리메소드와 ServiceLoader는 무슨 관계인가요?
0
346
1
강의 제목 오타 발견!!! 뚜둥
0
283
1
mvn install
1
458
1
강의 코드
0
486
2
Builder 필수값 질문입니다.
0
1044
1
EnumMap, EnumSet 정리
0
1003
1
HelloService 구현체
0
407
1
[과제] 강의 너무 만족스럽습니다.
0
716
1
PhantomReference 가 소멸되는 시점을 보는 코드 부분이 약간 이상한것 같습니다.
1
545
2
안녕하세요
2
682
1
객체 소멸에 관한 질문
0
544
0
정적 팩토리 메서드에 대해 질문이 있습니다.
0
542
0
Mock test 관련 질문입니다!
0
530
1
안녕하세요 선생님, 강의를 보고나서 Optional 소스코드를 뜯어보다가 어려운 부분이 있어서 질문 드립니다.
2
522
2
기선님 질문있습니다..
0
381
1
intellij의 equals 자동 생성 기능
1
521
1
Builder에 default값 추가하기
0
304
1
[과제] EnumMap, EnumSet
8
882
1

