일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- java
- spring aop
- Spring Boot
- spring framework
- spring
- @JUnit
- 마이바티스
- STS
- POJO
- 컨테이너
- java spring
- JDBC TEMPLATE
- Ubunt
- Framework
- SpringJDBC
- @test
- @Spring-Test
- AOP
- Linux
- Dependency Injection
- myBatis
- Di
- Spring JDBC
- 리눅스
- 프로퍼티
- pointcut
- JdbcTemplate
- unix
- @AspectJ
- XML
Archives
- Today
- Total
개키우는개발자 : )
DI와 단위 테스트 본문
반응형
요약 및 결론
단위 테스트와 통합 테스트의 차이점, 그리고 더 효율적인 테스트 방식을 소개하며, 테스트 코드의 작성과 개선을 다루었습니다.
핵심 내용
테스트 대상의 정의:
- 앞서 작성한 테스트 코드들은 API와 그 의존 객체인 SimpleHelloService의 기능을 검증하는 테스트.
- 테스트는 단순한 자바 메서드를 통해서도 가능하며, 이를 통해 테스트 속도를 크게 줄일 수 있음.
단위 테스트 (Unit Test) 작성:
- SimpleHelloService와 같은 자바 클래스를 직접 테스트하는 단위 테스트는 서버를 실행할 필요가 없으며, 이를 통해 테스트 속도가 매우 빠름.
- 예시로 HelloService에 대해 단위 테스트를 작성해, isEqualTo 메서드를 사용해 예상한 인삿말과 응답을 비교함.
- HelloController와 같은 의존 관계가 있는 클래스의 경우, 의존 객체를 직접 구현해 테스트할 수 있음.
Mocking 및 테스트 스텁:
- HelloController와 같은 클래스의 테스트 시 의존 객체인 HelloService를 단순화하거나 Mock으로 구현해, 이를 간단한 Lambda식으로 처리할 수 있음.
- 이는 테스트 스텁을 사용한 예시로, 의존 객체로부터 고립된 테스트를 가능하게 함.
예외 상황 테스트:
- Null 값이 들어오는 경우나, 빈 문자열을 처리하는 예외 상황을 처리하는 테스트도 작성.
- 예외 발생 시 NullPointerException이나 IllegalArgumentException과 같은 예외를 기대하고 테스트하며, AssertJ를 통해 예외 발생 여부를 검증.
성능 및 개선:
- 단위 테스트는 테스트 실행 속도가 매우 빠름(약 50ms), 통합 테스트와 비교해 효율적.
- 빠른 테스트를 통해 더 많은 테스트 케이스를 검증할 수 있으며, 테스트가 빠르게 실행될수록 개발 생산성이 높아짐.
의존성 주입과 수동 DI:
- 테스트 시 의존 객체를 수동으로 주입하는 방식도 가능하며, 이를 통해 테스트 환경에서의 수동 DI(Dependency Injection)라고 부름.
- 이 개념은 Spring의 의존성 주입 원리와 유사하며, 테스트 코드에서 Spring 컨테이너를 사용하지 않고도 의존 관계를 설정할 수 있음.
결론:
단위 테스트는 빠르고 효율적인 방법으로, 의존성을 줄이고 직접적인 검증을 가능하게 한다. 이를 통해 코드의 품질과 유지보수성을 높일 수 있으며, 테스트 코드 자체가 의존성 주입의 원리를 구현하고 있음을 설명.
반응형
'토비의 스프링 부트 - 이해와 원리 > 섹션6 - DI와 테스트, 디자인 패턴' 카테고리의 다른 글
DI를 이용한 Decorator, Proxy 패턴 (0) | 2024.10.08 |
---|---|
테스트 코드를 이용한 테스트 (0) | 2024.10.08 |
Comments