본문 바로가기

Test6

[Test] Spring REST Docs 적용하기 Spring REST Docs는 Spring Boot 애플리케이션의 RESTful API 문서를 자동으로 생성해 주는 도구이다.이 때 테스트 코드를 기반으로 API 문서를 생성하기 때문에 실제 API 동작과 일치하는 신뢰성 있는 문서를 제공할 수 있다.기본적으로 AsciiDoc이라는 Markdown과 유사한 마크업 언어를 사용해서 문서를 작성한다. ↔ SwaggerSwagger라는 REST API를 문서화하고 테스트할 수 있는 도구가 존재하는데 이는 적용이 Spring REST Docs에 비해 쉽고, 콘솔에서 API를 호출하여 테스트할 수 있다는 장점이 존재한다.하지만 프로덕션 코드에 API 문서화하는 코드가 의존하며 API 변경 시 문서에 누락될 수 있다는 단점이 존재한다.따라서 이번 시간에는 Spri.. 2025. 1. 30.
Error creating bean with name 'jpaAuditingHandler' @WebMvcTest를 통해 컨트롤러에 대한 테스트를 작성하는데 해당 에러가 나왔다.이는 JPA Auditing을 사용할 때 메인 메서드에 @EnableJpaAuditing을 추가하면서 기능 활성화를 위해 JPA 관련 빈들을 찾으려 하기 때문에 발생한다.따라서 해당 기능을 Configuration으로 분리하여 설정하였다.// @EnableJpaAuditing 제거@SpringBootApplicationpublic class MainApplication { public static void main(String[] args) { SpringApplication.run(MainApplication.class, args); }}@EnableJpaAuditing@Configurationpublic class .. 2025. 1. 2.
[Test] Spring-Security 도입 후 테스트 Spring Security 의존성을 추가했더니 대부분의 테스트가 실패하였다.이를 해결하기 위해 이유를 하나씩 살펴보도록 하겠다. 먼저 컨트롤러의 단위 테스트에서 @WebMvcTest 애노테이션을 사용한다.이는 Web과 관련된 (Controller, ControllerAdvice, Filter, Interceptor 등) 빈들만 등록하게 된다.즉 Service, Repository Component와 같은 빈들은 등록하지 않는데, Security 설정을 위해 추가한 SecurityConfig를 살펴보면 해당 Config에서 OAuth2UserService를 주입받는다.@RequiredArgsConstructor@Configuration@EnableWebSecuritypublic class Security.. 2025. 1. 2.
[Test] 서비스 계층 테스트 서비스 계층의 경우 주로 비즈니스 로직이 구현되고 데이터 가공이 빈번하게 이루어지는 계층이므로 데이터의 정합성과 예외 케이스를 신경써서 테스트를 작성해야 한다.비즈니스 로직은 주로 Repository나 외부 서비스 계층과의 잦은 데이터 교환이 이루어지는 경우가 많기 때문에 무조건적인 단위 테스트 방식이 아니라 통합 테스트와 적절히 섞어서 많이 작성된다고 한다. 아래와 같은 서비스 로직이 있다고 하자.@Service@RequiredArgsConstructorpublic class PostService { private final PostRepository postRepository; public PostResponse.PostResponseDto findOne(Long id) { P.. 2024. 12. 30.
[Test] 컨트롤러 테스트 Mockito와 단위 테스트 개념단위 테스트란?단위 테스트는 각 기능이나 모듈이 의도한 대로 작동하는지를 검증하는 테스트 방법으로 개발자가 작성한 코드의 작은 단위, 즉 함수나 메서드 단위로 진행된다.이는 각 기능 별hbb-devlog.tistory.com 저번에 간략하게 살펴본 Mockito와 단위 테스트의 개념을 토대로 컨트롤러 계층을 테스트하는 코드를 작성해보도록 하겠다.다음과 같은 컨트롤러가 있다고 하자.해당 코드는 postService.findOne이라는 메서드를 호출하고 이를 HttpResponse로 반환한다.@RestController@RequestMapping("/api/posts")@RequiredArgsConstructorpublic class PostController { pri.. 2024. 12. 30.
[Test] Mockito와 단위 테스트 개념 단위 테스트란?단위 테스트는 각 기능이나 모듈이 의도한 대로 작동하는지를 검증하는 테스트 방법으로 개발자가 작성한 코드의 작은 단위, 즉 함수나 메서드 단위로 진행된다.이는 각 기능 별로 독립적으로 테스트하여 코드의 품질을 높이고, 버그를 조기에 발견할 수 있는 장점이 있다.↔ 통합 테스트목적: 여러 모듈 또는 클래스가 서로 상호작용할 때 시스템이 올바르게 동작하는지 확인하는 테스트 방법으로전체적인 동작을 테스트하기 때문에 시스템의 안정성을 검증하는 데 중요하다.실제 데이터베이스, 파일 시스템 등 외부 의존성을 포함하여 실행 시간이 길다.자바 언어의 경우 JUnit 프레임워크를 활용해서 단위 테스트를 수행할 수 있다.테스트 코드는 주로 Given/When/Then 패턴을 사용하여 작성한다.Given : .. 2024. 12. 30.