[테스트 코드] 스프링에서의 Redis 테스트 환경 구축
·
Spring/Test
사이드 프로젝트를 진행하면서 테스트 코드를 작성하고 있다. 이때, Redis에 관한 테스트 코드를 작성하며 알게 된 것들에 관해 포스팅 하려한다. Spring에서 Redis를 테스트 하는 방법 Spring에서 `Redis`를 테스트하는 방법에는 다음과 같은 방법들이 있다.로컬 Redis(서버 or 도커)Embedded RedisTestContainers`Redis`를 테스트 한다면 위와 같은 방법들을 이용해 테스트를 진행할 수 있을 것이다. 근데 저기서 로컬 PC에 직접 `Redis`를 띄워서 테스트 코드를 검증하는 방식이 과연 옳을까?  로컬 Redis 테스트 코드는 어느 환경에서든 동일하게 실행되어야 한다는게 맞다고 본다. `Github Actions` 나 `Jenkins` 에서의 CI/CD 과정에서..
2024-11-25 학습일기
·
개발 기록
오랜만에 학습일기를 쓰는 것 같다. 지금 백엔드 취준하시는 분들 정말 화이팅입니다.   요즘 테스트 코드를 복습한 뒤 진행중인 사이드 프로젝트에 적용해보고 있다. 어느정도 구체적인 테스트 코드를 작성하는 것이 맞을까? 성공 케이스? 실패 케이스? 아니면 핵심 로직?  그리고 요즘 드는 생각이 확실하게 뇌는 확장이 되지 않는 큐가 맞다. 전부 열심히 공부했는데 새로운 지식이 들어올수록 빠져나간다.  알고리즘 문제도 풀었다. 무려, 이름도 코딩 테스트 공부 알고리즘코딩 테스트 공부
[테스트 코드] @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..
[테스트 코드] 테스트 더블 Mock vs. Stub vs. Spy 차이
·
카테고리 없음
테스트 더블 일단 `Mock`, `Stub`, `Spy` 각각은 테스트의 목적과 요구 사항에 따라 다르게 사용하고, 종종 함께 사용되기도 한다. 테스트 코드를 작성하다 보면 위 세 가지 개념을 마주하게 되는데 짚고 넘어가자. `Mock`, `Stub`, `Spy`는 소프트웨어 테스트에서 자주 사용되는 용어로, 모두 테스트 더블(test double)의 일종이다. 테스트 더블이란, xUnit Test Patterns의 저자인 제라드 메스자로스(Gerard Meszaros)가 만든 용어로 테스트를 진행하기 어려운 경우 이를 대신해 테스트를 진행할 수 있도록 만들어주는 객체를 말한다. (참고: Test Double을 알아보자)   각각은 테스트 중에 외부 시스템이나 복잡한 컴포넌트를 대체하는 데에 사용되지만,..