junit

    단위 테스트 - Controller (feat. 추가적인 단위 테스트의 방향성)

    [사용 스택]- Spring Boot 3.x- Java 17- Spring data JPA- H2- Junit 5- mockito  이번 글에서는 Controller의 단위테스트를 작성한 방법을 소개하겠습니다.들어가기에 앞서서,저는 Rest Controller를 사용하여 REST API를 만들었습니다. Controller컨트롤러의 역할은 HTTP 요청에 대한 비즈니스 로직 호출과 적절한 응답을 해주는 것입니다.저는 RestControllerAdvice를 사용해서 전역에서 발생된 예외에 맞게 응답 데이터를 생성해 주도록 했습니다.따라서, 제가 작성한 컨트롤러에서는 성공적인 응답만을 반환해줍니다.또한, 통일된 응답 데이터를 만들기 위해서 ResponseDTO 를 만들어 두었습니다.@AllArgsConstru..

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

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

    [Spring Boot] JPA - MySQL

    Mybatis vs JPA MySQL 데이터베이스를 연결하는 방법으로 두 가지 중 어떤 방법을 선택할지 고민했습니다. Mybatis는 직접 쿼리를 작성한 후 XML 또는 어노테이션을 사용해서 데이터 맵핑을 하는 방법이고, JPA는 객체와 관계형 데이터베이스 간의 매핑을 제공해주어서 쿼리를 작성할 필요가 없습니다. Mybatis를 사용해봤던 경험으로 저는 Mybatis를 사용하면서 장기간 프로젝트를 이어나가면 코드가 조금 복잡할 수 있겠다 생각했습니다. (물론 제가 실력이 부족해서..ㅎㅎ) JPA를 사용할 경우 얻을 수 있는 장점으로 여러 가지가 있겠지만 저는 밑에 있는 이유 때문에 JPA를 선택했습니다. - 코드를 더욱 간결하게 만들 수 있습니다. - 보다 높은 유연성과 확장성을 제공합니다. 아직 JPA..