회원 서비스 테스트에서 질문이 있습니다
269
13 asked
의존성 주입부분에서 질문이 있는데
왜 의존성을 주입받는 대상이 테스트가 아니라 메인일까요?
테스트에서 메인으로 의존성을 주입한다면 테스트를 실행하지 않으면 메인이 실행안되는 거 아니지 않나요? ㅠㅠ
Answer 3
2
안녕하세요.
자바의 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에서 구현한 애플리케이션을 실행하는 중에서도 테스트를 실행 시킬 수 있는 것입니다.
1
이게 H2 DB처럼 실제 DB를 쓰는 경우는 메인에서 먼저 돌려보고 test로 넘어가는데
DB를 아직 연동 안해서 임의로 Memory램?을 DB라고 가정하고 test부터 시작하는 MemoryMemberRepository 강의 부분에서
DI라는 개념이 처음 등장하니까 헷갈려버리고 마신 것 같습니다
test부분에서 memberService에 repository를 넣은 다음에 main부분을 실행해야 하는구나(X) - test를 main의 예행단계라고 착각하심
test부분에서 memberService에 repository를 넣는 것을(DI) main부분에도 해줘야 하는구나(O)
0
안녕하세요. 안윤기님
도움을 드리고 싶은데, 질문이 잘 이해가 되지 않습니다. 코드를 포함해서 좀 더 자세히 질문해주시겠어요?
..
0
85
2
Unused property.....
0
104
2
project JDK is misconfigured
0
140
2
외부 API의 ID 타입(String/UUID)과 내부 도메인의 ID 타입(Long)이 불일치할 때의 설계 정석
0
85
2
단위/통합 테스트 버전충돌 문제
0
92
2
❗️springboot 4.0.2 버전 aspectj dependency 설정❗️
0
237
1
왜 컨트롤러는 변한게 없는데 새로 만든 html 파일이 뜨나요?
0
105
2
윈도우 build test오류 질문
1
104
2
테스트 관련 공부에 대한 조언을 얻고 싶습니다
0
103
2
테스트 실행 시 에러 질문
0
300
1
name을 통한 비교와 객체를 통한 비교
0
77
1
빌드 후 libs 없음
1
133
1
윈도우 gradlew.bat 에러
0
170
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
186
3
잘 모르겠습니다.
0
164
2
fail을 똑같이 쳤는데 오류가 발생해요
0
160
2
index.html Welcome page
0
128
1
프로젝트 gradle-groovy ?
0
384
1
테스트코드 메서드명 한글
0
206
2

