Spring boot와 JUnit5, Mockito를 사용해서 Service layer의 테스트 코드를 작성하는 방법을 찾아봤다. Mockito 라이브러리를 사용해서 연관된 Repository, Service 등은 Mock 객체로 만들고 진짜 테스트 하고 싶은 기능을 테스트 해보자. https://www.baeldung.com/mockito-series 여기에 예제가 많이 있었다. mock 객체로 만들어서 테스트 하기 @ExtendWith: Mockito를 사용하는 환경으로 설정한다. @Mock: 클래스의 가짜 인스턴스를 만들어준다. @InjectMocks: 클래스의 필요한 의존성을 Mock으로 자동으로 주입한 인스턴스를 만들어준다. 배운 것과 나의 생각 Service를 테스트 할 때 중요한 점은 어떤 ..
전체 글
다양한 경험을 기록해요Controller에서 입력받는 Dto 클래스에 @Valid로 유효성 검사를 할 때, 테스트 코드를 작성하는 방법을 찾아봤다. 크게 WebMvcTest로 Controller를 테스트 하는 방법과 Validator를 사용해서 테스트 하는 방법 두 가지를 찾을 수 있었다. 오직 Dto의 유효성 검사만 테스트 하고 싶었기 때문에 Validator를 사용해서 테스트 하는 방법을 사용했다. Validator로 Dto 유효성 검사 커스텀 유효성 검사가 없기 때문에 기본적으로 제공되는 ValidatorFactory, Validator를 사용해서 테스트 했다. validator의 validateProperty 메서드로 원하는 필드의 유효성 검사만 진행했는데, validate 메서드로 한 번에 모든 필드를 검사할 수도 ..
오늘 Repository랑 Controller 테스트 다 연습 해봐야지.. 오늘 한 일 테스트 코드를 위한 환경 만들기 POJO 클래스 테스트 Service 레이어 테스트 2023.12.01 - [Tool/Spring] - [Spring boot] H2 데이터베이스에서 MySQL dialect 설정하기 [Spring boot] H2 데이터베이스에서 MySQL dialect 설정하기 이 글은 Spring boot 3.1.5 버전을 사용하며 작성했다. 결론은 3.1.5 버전 기준으로는 MODE만 설정하면 된다. dialect는 필요 없다. 상황 테스트 환경용 H2 데이터베이스에서 MySQL로 dialect를 설정할 때 아래 ouohoon.tistory.com
이 글은 Spring boot 3.1.5 버전을 사용하며 작성했다. 결론은 3.1.5 버전 기준으로는 MODE만 설정하면 된다. dialect는 필요 없다. 상황 테스트 환경용 H2 데이터베이스에서 MySQL로 dialect를 설정할 때 아래와 같은 에러가 발생했다. spring: datasource: url: jdbc:h2:mem:testdb;MODE=MySQL; jpa: properties: hibernate: dialect: org.hibernate.dialect.MySQL5Dialect 접근 내가 설정한 dialect를 사용하지 못하는 상황이였다. 어떤 dialect를 사용해야 하는지 알기 위해서 hibernate의 docs를 찾아봤다. https://docs.jboss.org/hibernate/..
팀 프로젝트 하면서 바쁘니까 TIL을 점점 미루게 됐다. ㅎㅎ.. 이것도 어제 한 일을 오늘 쓰는.. 반성의 시간 어제 한 일 스프링 부트에서 JUnit5로 테스트 코드 작성하는 방법을 공부했다 Mockito 라이브러리로 Mock 객체를 만들어서 컨트롤러와 서비스 클래스를 테스트 하는 방법은 공부중이다. [Spring boot] JUnit5 테스트 코드 작성하기 Spring boot 환경에서 JUnit5로 테스트 코드를 작성하기 위한 애너테이션을 알아보자. 단위 테스트를 위한 JUnit5 애너테이션 @Test 적용하면 해당 메서드를 테스트 한다. @Test void create(){} @BeforeEach 적용 ouohoon.tistory.com
Spring boot 환경에서 JUnit5로 테스트 코드를 작성하기 위한 애너테이션을 알아보자. 단위 테스트를 위한 JUnit5 애너테이션 @Test 적용하면 해당 메서드를 테스트 한다. @Test void create(){} @BeforeEach 적용하면 해당 메서드는 각각의 테스트가 실행하기 전에 실행된다. @BeforeEach void test() @AfterEach 적용하면 해당 메서드는 각각의 테스트가 실행된 후에 실행된다. @AfterEach void test() @BeforeAll 적용하면 해당 메서드는 전체 테스트가 실행되기 전에 단 한 번만 실행되는 메서드가 된다. static method여야 한다. @BeforeAll static void test() @AfterAll 적용하면 해당 메..