JUnit 테스트 어노테이션 정리

CokeBear·2022년 2월 14일
1

spring

목록 보기
1/15

Junit 5에서는 테스트를 진행하는 어노테이션이 여러 종류가 있다.

SpringBootTest

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK)

vSpringBootTest는 실제 애플리케이션을 자신의 로컬 위에 올려서 포트주소가 Listening 되어지고 , 실제Database와 커넥션이 붙어지는 상태에서 진행되는 Live 테스트 방법이다.

커넥션이 붙어지기 때문에 기존 서버에 등록된 Bean과 component를 다 띄운 상태에서 테스트 한다.

실제 DB와 연결되어 테스트 하지만 등록 후 테스트가 끝나면 rollback이 되기 때문에 데이터상에는 변화가 없다.

하지만 테스트 환경과 분리되는 것이좋기 때문에

Test환경에서 DB를 따로 구축하여 사용하는 것이 좋다.

Test에 resource 폴더를 만들고 설정파일 yml 을 생성하여

spring:
  datasource:
    url: jdbc:h2:mem:test
    username: sa
    password:
    driver-class-name: org.h2.Driver

아래와 같이 설정해 둔다면 테스트 환경에서는 memory DB를 사용하게 된다.

WebMvcTest

@WebMvcTest(BookController.class)

다음은 WebMvcTest 이다.

Mock이라는 가상 환경에 원하는 객체만 Ioc환경 등록을 하여

가상으로 테스트 할 수 있는 환경을 제공해 준다.

DB가 없는 가상환경이기 때문에 테스트가 가볍고 서버와 완전히 분리되어 실행된다.

when, given 메소드를 통해 테스트할 메소드의 기대값을 설정해 줄 수 있다.

 when(bookService.save(book)).thenReturn(new Book(1l,"스프링 따라하기" , "코스"));
profile
back end developer

0개의 댓글