inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Practical Testing: 실용적인 테스트 가이드

Q. private 메서드의 테스트는 어떻게 하나요?

ProductNumberFactory 클래스는 어떤 Layer 객체로 봐야 할까요?

452

요니

작성한 질문수 41

0

안녕하세요!
먼저 항상 좋은 강의 감사드립니다!

 

저도 작은 경험 이지만 개발을 하면서 서비스 단의  
로직을 분리 (강의에서 말씀 해주신 것 처럼 책임을 분리할 정도)

해야 하는 상황인 경우,
이렇게 하는게 맞는지는 모르겠으나,

Point1. ServiceUtil 클래스를 정의하여 컴포넌트로 주입받아 사용하거나 (실무에선 이렇게 사용)

Point2. 학습시에는 Facade 패턴을 이용하여
서로 다른 서비스들의 상위 퍼사드 객체를 만들어서 사용한 적이 있습니다.
(물론 퍼사드 패턴의 경우, 두 로직이 완전히 다른 맥락인 경우에 사용하는 것 같습니다.. 강의 예제와 같이 결합도가 높은 경우가 아니라..)

그런데, 강의에서는 Factory 객체를 만들어서
(마치 제가 ServiceUtil을 만들어서 사용하는 것 처럼 - 사실 이름만 다르지 같습니다)
사용하시는 모습을 보여주셨는데,
Q1. 강사님께서는 실무에서 서비스의 책임을 분리할 때 주로 이런식으로 Factory 클래스를 분리하여 사용하시는지 궁금하고,

 

Q2.그렇게 Factory 클래스로 책임을 분리했을 때,
이 Factory 클래스는 Controller / Service/ Repository 그 어느것도 아니게 되는데,

Spring WEB mvc 레이어 아키텍쳐 상으로 어떤 Layer의 어떤 입장의 객체로 인지하고 사용해야 하는지 여쭙고 싶습니다.

 

감사합니다.

spring tdd jpa mockito 소프트웨어-테스트 junit5

답변 2

2

박우빈

안녕하세요, khd1692 님! :)
답변 드리겠습니다.

 

Q1. 강사님께서는 실무에서 서비스의 책임을 분리할 때 주로 이런식으로 Factory 클래스를 분리하여 사용하시는지 궁금하고,

항상 Factory로 분리한다기 보다는, Factory라는 명명에 맞는 경우에 분리한다고 보는 것이 맞겠네요.
특정 객체(ProductNumber)를 일정한 규칙에 의거하여 생성해주는 책임을 가지고 있다고 판단하였기 때문에 Factory라는 이름을 주었습니다. :)

Q2.그렇게 Factory 클래스로 책임을 분리했을 때,
이 Factory 클래스는 Controller / Service/ Repository 그 어느것도 아니게 되는데,

Spring WEB mvc 레이어 아키텍쳐 상으로 어떤 Layer의 어떤 입장의 객체로 인지하고 사용해야 하는지 여쭙고 싶습니다.

기본적으로는 Service 레이어에 속한다고 보는 것이 맞을 것 같네요.
소거법으로 보아도, 외부 세계에서 요청을 받는 Controller, 데이터를 읽고 쓰기 위한 Repository는 아닌 것이 확실하고, 비즈니스 로직과 관련된 객체이니 Service 레이어라고 보는 것이 타당하기 때문입니다.

감사합니다. :)

0

인프런 AI 인턴

안녕하세요 khd1692님, 인프런 AI 인턴이에요.

Q1. 저는 Factory 클래스를 분리하여 사용하는 방식은 실무에서도 자주 사용하는 방식입니다. Factory 클래스는 객체를 생성하는 역할을 담당하고, 이를 통해 객체 생성 로직을 캡슐화하고 중복을 줄일 수 있습니다.

Q2. Factory 클래스는 일반적으로 Spring WEB MVC 아키텍처에서는 Service 레이어에 속하는 객체로 간주될 수 있습니다. Service 레이어는 비즈니스 로직을 처리하는 역할을 수행하는 곳으로, Factory 클래스 역시 객체 생성과 관련된 로직을 처리하기 때문에 Service 레이어에 포함될 수 있습니다.

답변이 도움이 되었는지요? 추가로 궁금한 점이 있으시면 언제든지 물어보세요!

private 상수 테스트 관련 질문

0

83

1

void는 어떻게 테스트하나요..? void로 애초에 코딩하면 안되나요??

0

126

2

커버리지는 어떻게 활용하시는지 궁금합니다.

0

161

2

테스트 문서화 질문입니다

0

105

2

단위테스트 질문이 있습니다

0

96

2

컨트롤러는 모킹을 한 이유가 궁금합니다.

0

103

2

ERD 가장자리에 있는 도메인 테스트 질문

0

89

2

DTO 검증 필드에 대한 테스트 코드 작성은 어디까지?

0

135

2

OrderCreateRequest DTO에 대해서 궁금한점

0

102

2

고전파의 테스트 대역 사용 대상, 공유 의존성

0

156

2

계층 관련 질문이 있습니다.

0

139

3

'코틀린'에서는 빌더를 따로 쓰지 않는데, 이 때는 어떻게 test fixture를 만드시는지 궁금합니다

1

124

2

혹시 update 로직은 어떻게 테스트하나요? (@Setter?)

0

134

2

단위테스트와 통합테스트의 경계가 궁금합니다.

0

228

2

Service+Repository 통합테스트 관련 질문입니다.

0

150

2

OrderControllerDocsTest 작성 해봤는데요. 날짜 형식이 이상하게 나와요

0

185

2

test 용 .yml

0

90

2

throws Exception

0

80

2

카페키오스크 클래스 문의 ,,

0

89

2

Rest docs 문서용 테스트코드를 따로 작성해야 되나요?

0

174

2

테스트 코드에서 필요한 생성자

0

138

1

tearDown 순서

0

116

2

@Builder 생성자 private

0

136

2

@DisplayName gradle / intellJ

0

93

2