[인프런] 김영한님 스프링 입문 정리 [2]

김영신·2022년 4월 16일
0

InfLearn

목록 보기
2/5

테스트 코드에서 예외처리 테스트

테스트 코드에서는 실행과정이 잘 되는지도 중요하지만 더욱 중요한 것이 예외처리가 잘 되느냐다.

MemberService 로직을 다 작성하고 나서 클래스 이름을 클릭후 alt enter를 누르면 이런게 뜬다. 혹은 ctrl shift T

여기서 테스트 생성을 눌러주면

이런 창이 하나 뜨는데 여기서 JUnit5는 테스트 코드를 위한 라이브러리이다.
그리고 해당 멤버에 테스트할 메서드를 밑에서 모두 선택후 확인을 누르면
정확히 테스트 폴더에 똑같은 경로에 테스트 파일이 생성된다.

신세계..


여기선 테스트 코드이기 때문에 한글을 써도 무관하다.
validateDuplicateMember 메서드로 이름이 같다면 예외를 던지도록 작성했다.
일단 성공의 케이스를 실행해보면 무난하게 성공한다.


예외의 케이스를 작성을 했다. 밑에 주석을 단 것 처럼 Try, catch 문으로 실행해도 되지만 테스트 코드에선 Assertions 라는 좋은 클래스가 있기 때문에 JUnit의 assertThrows를 쓰도록하자.
이렇게 작성을 하면 예외처리에 대한 테스트도 가능하게 된다.

자 이 테스트 코드도 마찬가지로 모든 테스트를 실행할 경우 비동기로 실행하므로 afterEach() 를 작성해준다.


afterEach를 작성했다.

스프링 빈과 의존관계


간단하게
스프링 빈 : @Component 가 붙은 클래스
의존성 주입 (Dependency Injection) DI : 해당 연관관계에 있는 인스턴스를 주입해 주는 것


스프링을 시작할 때 스프링 컨테이너 라는 게 생긴다.
그리고 @이런 어노테이션이 있다면 스프링 컨테이너는 스프링 컨테이너에 등록을 하고 관리하게 된다.
이것이 스프링 빈이다.

스프링 빈을 등록하는 2가지 방법

  1. 컴포넌트 스캔과 자동 의존관계 설정 ( Autowired )
  2. 자바 코드로 등록하는 방법

1. 컴포넌트 스캔과 자동 의존관계 설정 (AutoWired)

@Service, @Repository, @Controller로 들어가면 @Component라는 것을 볼 수 있다.
결국엔 3가지 전부 @Component라는 것이다.
@Component 애노테이션이 있다면 스프링 빈으로 자동 등록된다.

즉, 스프링 컨테이너가 해당 객체를 관리하게 되는 것이다.

스프링은 스프링 컨테이너에 스프링 빈을 등록할 때, 기본으로 싱글톤으로 등록한다
같은 스프링 빈은 모두 같은 인스턴스다.
설정으로 싱글톤이 아니게 설정할 수 있지만, 특별한 경우가 아니라면 대부분 싱글톤을 사용한다.

2. 자바 코드로 등록하는 방법


SpringConfig라는 파일을 해당 경로에 만들고
@Configuration 이라는 어노테이션을 추가해준다.
그리고 @Controller를 제외한 모든 @Service, @Repository를 다시 없애준다.

@Bean 어노테이션으로 이제부터 스프링 빈을 만들 것이다 라는 것을 명시해주고
해당 클래스파일에서 스프링빈을 만들어 의존성을 주입해준다.

의존성을 주입하는 방법에는 3가지가 있다.
생성자 주입

필드 주입

Setter 주입

결론적으로 생성자 주입을 권장한다

알게된 꿀팁

어떠한 명령문을 드래그 하고 ctrl enter로 메서드를 추출하면 validateDuplicateMember 처럼 알아서 생성해준다.
Ctrl + Shift + T = 테스트 코드
명령문 드래그 Ctrl + enter : 메서드 추출

profile
어제보다 오늘 더 Developer

0개의 댓글