반응형
Notice
Recent Posts
Recent Comments
관리 메뉴

개키우는개발자 : )

DI와 단위 테스트 본문

반응형

요약 및 결론

단위 테스트통합 테스트의 차이점, 그리고 더 효율적인 테스트 방식을 소개하며, 테스트 코드의 작성과 개선을 다루었습니다.

핵심 내용

  1. 테스트 대상의 정의:

    • 앞서 작성한 테스트 코드들은 API와 그 의존 객체인 SimpleHelloService의 기능을 검증하는 테스트.
    • 테스트는 단순한 자바 메서드를 통해서도 가능하며, 이를 통해 테스트 속도를 크게 줄일 수 있음.
  2. 단위 테스트 (Unit Test) 작성:

    • SimpleHelloService와 같은 자바 클래스를 직접 테스트하는 단위 테스트서버를 실행할 필요가 없으며, 이를 통해 테스트 속도가 매우 빠름.
    • 예시로 HelloService에 대해 단위 테스트를 작성해, isEqualTo 메서드를 사용해 예상한 인삿말과 응답을 비교함.
    • HelloController와 같은 의존 관계가 있는 클래스의 경우, 의존 객체를 직접 구현해 테스트할 수 있음.
  3. Mocking 및 테스트 스텁:

    • HelloController와 같은 클래스의 테스트 시 의존 객체인 HelloService를 단순화하거나 Mock으로 구현해, 이를 간단한 Lambda식으로 처리할 수 있음.
    • 이는 테스트 스텁을 사용한 예시로, 의존 객체로부터 고립된 테스트를 가능하게 함.
  4. 예외 상황 테스트:

    • Null 값이 들어오는 경우나, 빈 문자열을 처리하는 예외 상황을 처리하는 테스트도 작성.
    • 예외 발생 시 NullPointerException이나 IllegalArgumentException과 같은 예외를 기대하고 테스트하며, AssertJ를 통해 예외 발생 여부를 검증.
  5. 성능 및 개선:

    • 단위 테스트테스트 실행 속도가 매우 빠름(약 50ms), 통합 테스트와 비교해 효율적.
    • 빠른 테스트를 통해 더 많은 테스트 케이스를 검증할 수 있으며, 테스트가 빠르게 실행될수록 개발 생산성이 높아짐.
  6. 의존성 주입과 수동 DI:

    • 테스트 시 의존 객체를 수동으로 주입하는 방식도 가능하며, 이를 통해 테스트 환경에서의 수동 DI(Dependency Injection)라고 부름.
    • 이 개념은 Spring의 의존성 주입 원리와 유사하며, 테스트 코드에서 Spring 컨테이너를 사용하지 않고도 의존 관계를 설정할 수 있음.

결론:

단위 테스트는 빠르고 효율적인 방법으로, 의존성을 줄이고 직접적인 검증을 가능하게 한다. 이를 통해 코드의 품질과 유지보수성을 높일 수 있으며, 테스트 코드 자체가 의존성 주입의 원리를 구현하고 있음을 설명.

반응형
Comments