inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트

컨트롤러를 소형 테스트로 만들기

하위 패키지의 상위 패키지 참조

374

작성자 없음

작성한 질문수 0

0

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

1분 42초쯤에 말씀하신 치명적인 실수에 대해서 질문드립니다.

 

강의에서는 후반부에 CertificationService가 자연스럽게 사라짐에 따라 하위 패키지인 UserServiceImpl상위 패키지인 CertificationService를 참조하지 않게 변경됐지만, 만약 CertificationService이 계속 존재했다면 UserServiceImpl은 어떠한 형태로 올바르게 CertificationService을 참조할 수 있을까요?

spring tdd jpa 소프트웨어-테스트 unittest

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

제공된 정보 내용과 직접적인 연관이 없어서 구체적인 코드 예제를 드리지는 못하지만, 일반적으로 Spring에서는 다양한 방법으로 다른 패키지의 클래스 또는 서비스를 참조할 수 있습니다. 이러한 참조는 주로 @Autowired 어노테이션을 사용하여 의존성 주입을 통해 이루어집니다. 만약 UserServiceImpl 클래스가 CertificationService 클래스를 올바르게 참조하려면, UserServiceImpl 클래스 내에서 CertificationService 타입의 멤버 변수를 선언하고 @Autowired 어노테이션을 사용하여 Spring이 자동으로 해당 타입의 빈(Bean)을 찾아 주입하도록 설정할 수 있습니다.

예를 들어, 다음과 같은 방식으로 구현할 수 있습니다:

@Service
public class UserServiceImpl implements UserService {

    private CertificationService certificationService;

    @Autowired
    public UserServiceImpl(CertificationService certificationService) {
        this.certificationService = certificationService;
    }

    // 클래스 내 다른 메소드들...
}

이 예제에서는 생성자 주입 방식을 사용하였으나, 필드 주입이나 세터 주입 방식을 사용할 수도 있습니다. 그러나 일반적으로는 생성자 주입 방식이 권장되며, 이 방식은 순환 참조를 방지하고 테스트 용이성을 높여주는 장점이 있습니다.

답변이 도움이 되었길 바랍니다. 다른 궁금한 점이 있으시면 언제든 질문해주시기 바랍니다.

UserService, CertificationService 책임 분리 기준 질문

0

28

1

service.port 패키지로 이동한 UserRepository가 infrastructure에 있는 UserEntity에 의존

0

59

1

Service 소형 테스트 질문

0

83

1

조회 시 엔티티를 조회하는 것이 아닌QueryDSL을 많이 사용 시 Dto는 어떻게 하나요?

0

116

1

controller 의 port 패키지의 service 인터페이스 사용

0

72

1

빌드 문제

0

92

1

빌드 안 되시는 분들 참고

0

102

1

update에서 Repository.save

0

105

1

최종 완성된 코드를 받아 볼 수 있을까요?

0

156

1

의존성 역전으로 해결한 외부의존성?

0

162

1

좋은 설계

0

180

1

Controller에 테스트

0

139

1

JPA가 아닌 Mapper 아키텍처 기반 테스트 코드 작성

0

242

0

영속성 객체 구분으로 인한 JPA와 Querydsl의 Projection 사용

0

224

1

인프라계층 구현체와 테스트 구현체에 대한 질문

0

223

1

실습 코드 커밋

0

373

1

UserEntity 메서드

0

294

2

CertificationServiceTest에서 MailSender 인터페이스가 아닌 FakeMailSender를 이용하는 것

0

217

1

레이어드 아키텍처 개발에 대하여

0

231

1

BDDMockito의 when을 사용한 코드가 given 절에 있는 이유가 궁금합니다.

0

223

1

테스트에서 주입과 생성

0

198

1

프로젝트 코드는 제공해주시지 않는건가요?

0

382

2

개선된 아키텍처의 구조

0

277

1

서비스 레이어의 단위 테스트 범위 고민

0

188

1