Test Code

    테스트 환경에서 환경변수 설정하기

    테스트 환경에서 환경변수 설정하기

    서론 프로덕션 코드에서 설정 파일(application.yml) 내에 환경 변수 처리해 놓은 값을 사용하는 코드에 관해 테스트 코드를 작성하려 할 때는 환경변수 세팅을 해주어야 합니다. 어떤 방법이 제일 나을지 찾아보니, 여러 방식이 있어서 정리합니다. 테스트 환경에서 환경변수 설정하는 방법 1번째 방법) 테스트 코드에서 바라보는 환경설정 파일을 별도로 생성하는 방법. ⚠️ 애플리케이션 컨텍스트가 로드되는 테스트 코드이어야 함. (feat. @SpringBootTest) 프로덕션 코드에서 환경 설정 값들은 src/main/resources/application.yml (혹은 application.property) 에 위치해있을텐데, 테스트 코드에서도 로직 수행 시에 필요한 환경 설정 값들을 별도의 환경 ..

    [JUnit5] @Mock 필드 초기화 시점에 따른 @BeforeAll 이슈 (@BeforeEach, 테스트코드의 라이프 사이클)

    [JUnit5] @Mock 필드 초기화 시점에 따른 @BeforeAll 이슈 (@BeforeEach, 테스트코드의 라이프 사이클)

    서론 테스트 코드를 작성하던 중 @BeforeAll 애노테이션을 사용하다가 @BeforeEach 와의 차이점, 그리고 테스트 코드의 라이프 사이클을 정리해보고자 글을 작성합니다. 문제 상황 InstantService 클래스 생성 시에 Mocking처리한 InstantRepository를 세팅하기 위해 아래와 같은 코드를 작성하면서 문제를 마주쳤습니다. @ExtendWith(MockitoExtension.class) class test { @Mock private InstantRepository instantRepository; private InstantService instantService; @BeforeAll void setUp() { instantService = new InstantService..

    [JUnit5] 실패 케이스 테스트하기

    JUnit5를 이용해 예외 발생 케이스를 테스트하는 방법을 알아봅니다. 방법 1. assertThrows() 메서드 사용 Exception 발생 여부 확인과 Exception 메시지를 비교할 수 있습니다. 아래는 CafeKiosk 서비스 클래스의 add(~) 메서드에 0 혹은 음수를 전달했을 때 예외가 잘 발생하는지 확인하는 테스트 메서드입니다. class CafeKioskTest { @Test @DisplayName("[FAILED] 음료 수량으로 음수, 0은 불가능하다.") void addWithCount() { // given CafeKiosk cafeKiosk = new CafeKiosk(); // then Exception exception = assertThrows(OperationFailed..

    [테스트 코드] Controller Test Code / @WebMvcTest / 행위 검증

    Controller 클래스의 테스트 코드를 작성하다 보면 컨트롤러 단에서 호출하는 서비스 메서드가 호출할 때 어떤 값이 필요하고 어떤 값을 반환하는지 정도의 검증을 하는 작업도 함께 진행한다. 컨트롤러 메서드는 아래와 같이 존재한다. (ApiResult 클래스는 외부 응답 시 공통적으로 사용하는 클래스이다.) @RestController @RequiredArgsConstructor public class ControllerA { private final ServiceA serviceA; @PostMapping("/a") public ResponseEnity controllerMethodA () { serviceA.methodA(); return new ResponseEntity(ApiResult.succ..