[테스트 코드] 단위 테스트 @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을 알아보자)   각각은 테스트 중에 외부 시스템이나 복잡한 컴포넌트를 대체하는 데에 사용되지만,..
[테스트 코드] 테스트 코드 이해하기
·
Spring/Test
테스트 코드의 중요성테스트 코드는 개발 과정에서 매우 중요하다. 이를 통해 버그를 조기에 발견하고 소프트웨어의 안정성을 확보할 수 있다.특히, 스프링부트에서는 다양한 도구와 라이브러리를 제공하여 테스트 코드 작성을 쉽게 도와준다. 이런 도구들을 효율적으로 사용함으로써, 개발자는 애플리케이션의 다양한 부분을 효율적으로 검증하고,결과적으로 코드의 품질을 높일 수 있다. 또한, 테스트 코드는 리팩토링과 기능 추가 시 안정성을 제공해 주기 때문에, 유지 보수성을 크게 향상시켜준다.  JUnit 5  `JUnit 5`는 스프링부트에서 가장 많이 사용되는 테스트 프레임워크 중 하나이다. 이 프레임워크는 `@Test` 어노테이션을 사용해 테스트 메서드를 정의하고, 테스트 실행 전과 후에 특정 작업을 수행할 수 있도록..
[테스트 코드] MockMvc, MockBean
·
Spring/Test
1. MockMvc란?`MockMvc`는 `Spring Test Library`에서 제공하는 한 클래스로서, 웹 서버를 따로 구동시키지 않아도`Spring MVC`의 동작을 모방(`mock`) 하도록 도와준다. 이를 통해 `Controller`가 정상적으로 동작하는지 테스트할 수 있다.  1-1. MockMvc 설정하기`MockMvc` 인스턴스는 `@WebMvcTest`나 `MockMvcBuilders`를 통해 생성할 수 있다.@WebMvcTest(controllers = MyController.class)class MyControllerTest { @Autowired private MockMvc mockMvc;} 위의 코드에서 `@WebMvcTest`는 `Spring MVC`에 특화된 슬라이..
[캐시 & 동시성 & Lock] 선착순 티켓 시스템 고도화 - 2
·
Spring/동시성 & Lock
2024.11.19 - [Spring/동시성 & Lock] - [캐시 & 동시성 & Lock] 선착순 티켓 시스템 고도화 [캐시 & 동시성 & Lock] 선착순 티켓 시스템 고도화 - 12024.09.27 - [Spring/동시성 & Lock] - [Spring] synchronized 키워드를 활용한 동시성 문제 해결 및 한계 - 3 [Spring] synchronized 키워드를 활용한 동시성 문제 해결 및 한계 - 32024.09.25 - [Spring] - [Spring] synchronizedhdbstn3055.tistory.com 이전 포스팅에서 우리는 `Distributed Lock`이나 `DB Lock`을 사용하지 않고 `Redis`를 도입하여 `Set`, `String` 같은 자료구조의 ..
[캐시 & 동시성 & Lock] 선착순 티켓 시스템 고도화 - 1
·
Spring/동시성 & Lock
2024.09.27 - [Spring/동시성 & Lock] - [Spring] synchronized 키워드를 활용한 동시성 문제 해결 및 한계 - 3 [Spring] synchronized 키워드를 활용한 동시성 문제 해결 및 한계 - 32024.09.25 - [Spring] - [Spring] synchronized 키워드를 활용한 동시성 문제 해결 및 한계 - 2 [Spring] synchronized 키워드를 활용한 동시성 문제 해결 및 한계 - 22024.09.22 - [Spring] - [Spring] synchronized 키워드를 활hdbstn3055.tistory.com 우리는 위 포스팅에서 `PESSIMISTIC_WRITE`의 `Database Lock`를 활용해 동시성 문제를 해결했다..