inflearn logo
강의

講義

知識共有

Spring入門 - コードで学ぶSpring Boot、Web MVC、DBアクセス技術

会員サービスデスト

회원 서비스 테스트에서 질문이 있습니다

269

yg9401243646

投稿した質問数 13

0

의존성 주입부분에서 질문이 있는데 

왜 의존성을 주입받는 대상이 테스트가 아니라 메인일까요?

테스트에서 메인으로 의존성을 주입한다면 테스트를 실행하지 않으면  메인이 실행안되는 거 아니지 않나요? ㅠㅠ

spring spring-boot java MVC

回答 3

2

OMG

안녕하세요.

자바의 Maven, Gradle 프로젝트의 경우, src 폴더 하위에는

우리가 개발할 프로그램의 실제 구현코드를 작성하게 될 영역인 'java' 디렉토리가 있고,

우리가 개발한 프로그램을 테스트 하기 위한 목적으로 만들어진 'test'디렉토리가 있습니다.

예시를 들어 볼게요.

java 디렉토리에는 kr.co.inflearn이라는 패키지 구조에, Repository 클래스를 구현해놓을 repository 패키지 가 하위에 존재하고, MemberRepository.class를 설계했다고 합시다.

이 MemberRepository.class를 잘 작성했는지 테스트 하기 위해서 테스트 코드를 작성해야 하는데

일반적으로 테스트 코드는 테스트 할 코드와 같은 패키지 구조를 가지며 클래스명+Test 혹은 + Tests로 작명합니다. 아래처럼요.

 

본론으로 돌아와 말씀드리자면,

Q. 왜 의존성을 주입받는 대상이 테스트가 아니라 메인일까요?

-> 의존성을 주입 받는 대상(=스프링 컨테이너가 관리하는 bean은 테스트 영역에서도

-----

[*당연한 얘기지만 테스트코드에서 사용하려면 스프링 컨테이너를 띄워야 하며, 주입을 받은 객체에 한해서 사용 가능하다는 뜻입니다.*

강의 내용을 넘어서는 내용이지만 Mock 프레임워크를 통한 가짜 객체를 이용하면 스프링 컨테이너를 띄우지 않아도 테스트 하는 방법이 존재합니다.

]

-----

, java 패키지 하위의 자바 구현코드에서도 사용 가능하며 테스트 코드를 작성하는 목적은 java 폴더 하위에서 구현한 코드가 잘 동작하는지 코드 구현과 코드 테스트로 서로의 목적이 구분 되어지는서로 별개의 영역으로 이해하시면 좋을 것 같아요.

Q. 테스트에서 메인으로 의존성을 주입한다면 테스트를 실행하지 않으면  메인이 실행안되는 거 아니지 않나요? ㅠㅠ

-> 위에서 말씀 드렸다시피 'test' 폴더 하위에서는 우리가 'java'에서 구현한 코드를 테스트 코드에서 'import' 하여  'java' 영역에서 구현한 코드가 잘 동작하는지 테스트 하기 위함이 목적입니다. 또한 서로 별개의 영역이기 때문에 java에서 구현한 애플리케이션을 실행하는 중에서도 테스트를 실행 시킬 수 있는 것입니다.

0

yg9401243646

제가 선후 관계를 잘 이해 못했었던거 같네요 좋은 답변 감사드립니다!!

1

duralumin

이게 H2 DB처럼 실제 DB를 쓰는 경우는 메인에서 먼저 돌려보고 test로 넘어가는데

DB를 아직 연동 안해서 임의로 Memory램?을 DB라고 가정하고 test부터 시작하는 MemoryMemberRepository 강의 부분에서

DI라는 개념이 처음 등장하니까 헷갈려버리고 마신 것 같습니다

test부분에서 memberService에 repository를 넣은 다음에 main부분을 실행해야 하는구나(X) - test를 main의 예행단계라고 착각하심

test부분에서 memberService에 repository를 넣는 것을(DI) main부분에도 해줘야 하는구나(O)

0

yh

안녕하세요. 안윤기님

도움을 드리고 싶은데, 질문이 잘 이해가 되지 않습니다. 코드를 포함해서 좀 더 자세히 질문해주시겠어요?

0

yg9401243646

Autowired에 대한 이해가 부족하여 생긴 고민이였던 것 같습니다 현재는 어떻게 돌아가는지 이해했습니다 답변 감사드립니다!!

0

OMG

영한님의 강의에서는 @Autowired를 이용한 필드 주입을 주로 이용하지 않지만 윤기님이 혼동한 부분이 이 때문이지 않을까 짐작하긴 했는데 맞나보네요^^;

..

0

87

2

Unused property.....

0

105

2

project JDK is misconfigured

0

141

2

외부 API의 ID 타입(String/UUID)과 내부 도메인의 ID 타입(Long)이 불일치할 때의 설계 정석

0

86

2

단위/통합 테스트 버전충돌 문제

0

92

2

❗️springboot 4.0.2 버전 aspectj dependency 설정❗️

0

238

1

왜 컨트롤러는 변한게 없는데 새로 만든 html 파일이 뜨나요?

0

106

2

윈도우 build test오류 질문

1

105

2

테스트 관련 공부에 대한 조언을 얻고 싶습니다

0

103

2

테스트 실행 시 에러 질문

0

301

1

name을 통한 비교와 객체를 통한 비교

0

77

1

빌드 후 libs 없음

1

134

1

윈도우 gradlew.bat 에러

0

171

1

@PostMapping("/members/new")가 동작하지 않습니다

0

91

1

java static class와 kotlin class

0

83

1

스프링 DB연결

0

129

1

소요 시간

0

89

2

ddl.sql에 빨간 밑줄

1

102

2

welcome page 에러

0

187

3

잘 모르겠습니다.

0

166

2

fail을 똑같이 쳤는데 오류가 발생해요

0

161

2

index.html Welcome page

0

128

1

프로젝트 gradle-groovy ?

0

385

1

테스트코드 메서드명 한글

0

206

2