mockito

    단위 테스트 - Service (feat. 테스트 더블)

    [사용 스택]- Spring Boot 3.x- Java 17- Spring data JPA- H2- Junit 5- mockito 레포지토리 테스트에 이어서 서비스에서 단위 테스트를 작성한 방법을 소개하겠습니다. Service서비스의 역할은 레포지토리를 사용하여 데이터를 요청하고 가져온 데이터로 비즈니스 로직을 수행하는 것입니다.서비스를 테스트하기 위해서는 레포지토리를 주입받아야 하는데,이 레포지토리가 실제 의존성을 주입받아 사용된다면,서비스를 테스트하는 단위 테스트라고 말하기 어렵습니다.(오히려 서비스와 레포지토리 모두를 한 번에 테스트하는 통합 테스트라고 생각합니다.)그렇기 때문에 레포지토리의 의존성을 줄여줄 필요가 있습니다.이를 위해 테스트 더블(Test Double)을 사용할 것입니다!! 테스트 ..

    Service의 메서드들이 중복해서 사용하는 로직을 테스트하기

    [사용 스택]- Spring Boot 3.x- Java 17- Junit 5- mockito  개발이 끝난 기존의 프로젝트에 테스트를 추가하고 있는 도중에 이 문제를 찾게 되었습니다.특정 서비스의 메서드들이 하나의 중복된 로직을 수행하고 있었고그 로직을 같은 클래스 내부에 메서드로 추출해서 사용하고 있습니다.모든 메서드에서 그 로직을 테스트하는 것은 효율적이지 않으며 불필요하다는 판단을 했습니다. 해결방안1. 해당 메서드를 외부 클래스로 추출하기일단 역할에 맞게 해당 메서드를 새로운 클래스로 추출하는 방법이 가장 와닿았습니다.이렇게 하면 각 역할에 맞는 클래스로 올바르게 사용될 수 있다고 생각했습니다.또한, Mocking을 통해 테스트를 독립적으로 수행할 수 있습니다. 하지만, 이렇게 하려면 기존의 코드..