Spring Boot 3.4.0 버전부터 @MockBean Deprecated이 되었다.
·
Spring/Test
현재 진행하고 있는 `Study With Me` 프로젝트에서 `@MockBean`을 사용하려고 보니  deprecated 되었다.. 그럼 뭘로 대체 되었을까 찾아보았는데  `@MockitoBean`으로 대체되었음을 확인했다. 사용 방법은 아래처럼 똑같이 사용하면 된다.@MockitoBeanprivate StudyRoomCommandService commandService;  아래는 이곳저곳에서 deprecated 된다는 흔적이다. https://github.com/spring-projects/spring-boot/issues/41157 Make @MockBean respect @Qualifier when replacing beans in application context · Issue #41157 · ..
[테스트 코드] 스프링에서의 Redis 테스트 환경 구축
·
Spring/Test
사이드 프로젝트를 진행하면서 테스트 코드를 작성하고 있다. 이때, Redis에 관한 테스트 코드를 작성하며 알게 된 것들에 관해 포스팅 하려한다. Spring에서 Redis를 테스트 하는 방법 Spring에서 `Redis`를 테스트하는 방법에는 다음과 같은 방법들이 있다.로컬 Redis(서버 or 도커)Embedded RedisTestContainers`Redis`를 테스트 한다면 위와 같은 방법들을 이용해 테스트를 진행할 수 있을 것이다. 근데 저기서 로컬 PC에 직접 `Redis`를 띄워서 테스트 코드를 검증하는 방식이 과연 옳을까?  로컬 Redis 테스트 코드는 어느 환경에서든 동일하게 실행되어야 한다는게 맞다고 본다. `Github Actions` 나 `Jenkins` 에서의 CI/CD 과정에서..
[테스트 코드] @DataJpaTest 사용
·
Spring/Test
@DataJpaTest `@DataJpaTest`는 JPA 관련 테스트를 쉽게 수행할 수 있도록 도와주는 스프링부트의 테스트 어노테이션이다. `@DataJpaTest` 어노테이션은 기본적으로 JPA 관련 설정만 활성화하고, 레포지토리 테스트에만 필요한 컴포넌트들을 로드한다.(즉, JpaTest에 필요한 최소한의 빈을 불러오므로, @Configuration 빈이 포함되어 있지 않음)  `@DataJpaTest`를 활용한 JPA 관련 테스트를 진행하며 필요한 간단한 설정에 대해 기록해두고자 이번 포스팅을 진행한다.   `@DataJpaTest` 사용 코드@DataJpaTest@Import({JpaAuditingConfig.class, QueryDSLConfig.class})@AutoConfigureTestD..
[테스트 코드] 테스트 코드에서 static method를 사용하는 법
·
Spring/Test
테스트 코드에서 Static Method를 사용하는 경우? 진행하고 있는 프로젝트에서 프론트엔드 분의 요청으로 유저 식별을 위해 `RandomUtils.generateAlphaNumericRandomCode()`라는 static method를 사용하게 되었다.@Slf4j@Service@Transactional@RequiredArgsConstructorpublic class AdminCommandService { private final AdminRepository adminRepository; private final PasswordEncoder passwordEncoder; private final ImageUploadService imageUploadService; private..
[테스트 코드] 단위 테스트 @InjectMock 사용방법
·
Spring/Test
@InjectMocks단위 테스트에서는 주로 `@SpringBootTest`가 아니라 `@InjectMocks`를 사용하는데이 어노테이션의 이름만 보면 "Inject + Mocks = 목 객체들을 주입한다." 이렇게 해석된다. `@InjectMocks`도 객체에 `Mock`을 주입하는 것인데 스프링의 의존성 주입과는 뭐가 다를까? 또한, 테스트 과정에서 인터페이스는 `@Mock`를 사용해야 했는데 왜 `@Spy`는 사용할 수 없다. 따라서, 이번 포스팅에서는 `@InjectMock`, `@Spy`, `@Mock`에 관한 정보를 담은 포스팅을 작성하려한다.  우선, 함께 볼 Service 코드는 다음과 같다. @Slf4j@Service@Transactional@RequiredArgsConstructorpu..
[테스트 코드] 테스트 코드 이해하기
·
Spring/Test
테스트 코드의 중요성테스트 코드는 개발 과정에서 매우 중요하다. 이를 통해 버그를 조기에 발견하고 소프트웨어의 안정성을 확보할 수 있다.특히, 스프링부트에서는 다양한 도구와 라이브러리를 제공하여 테스트 코드 작성을 쉽게 도와준다. 이런 도구들을 효율적으로 사용함으로써, 개발자는 애플리케이션의 다양한 부분을 효율적으로 검증하고,결과적으로 코드의 품질을 높일 수 있다. 또한, 테스트 코드는 리팩토링과 기능 추가 시 안정성을 제공해 주기 때문에, 유지 보수성을 크게 향상시켜준다.  JUnit 5  `JUnit 5`는 스프링부트에서 가장 많이 사용되는 테스트 프레임워크 중 하나이다. 이 프레임워크는 `@Test` 어노테이션을 사용해 테스트 메서드를 정의하고, 테스트 실행 전과 후에 특정 작업을 수행할 수 있도록..