관리 메뉴

Rootable의 개발일기

Spring Test 관련 정리 본문

Spring

Spring Test 관련 정리

dev-rootable 2023. 4. 27. 17:35

📌 given - when - then

Test 코드를 작성하는 노하우이다.

  • given : set data, 테스트할 데이터를 셋팅
  • when : input data, 테스트할 메서드 혹은 작업을 수행
  • then : validation, Assertions 등을 통해 검증

📌 assertThrows

assertThrows(기대하는 예외, () -> try 구문(예외 가능성이 있는 소스))

 

@Test
    public void 중복_회원_예외() throws Exception{
        //given
        Member member1 = new Member();
        member1.setName("spring");

        Member member2 = new Member();
        member2.setName("spring");

        //when
        memberService.join(member1);
        IllegalStateException e = assertThrows(IllegalStateException.class, () -> memberService.join(member2));

        //then
        assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다.");
    }

Reference:

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard

 

[무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의

스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., - 강의 소개 | 인프런

www.inflearn.com

 

📌 통합 테스트

  - 실제 운영 환경에서 사용될 클래스들을 통합하여 테스트

  - 단위 테스트와 같이 기능 검증을 위한 것이 아니라 Spring framework 에서 전체적으로 플로우가 잘 동작하는지 검증

    하기 위해 사용한다.

 

1. 장점

  - 애플리케이션의 설정, 모든 Bean 을 모두 로드하기 때문에 실제 운영 환경과 가장 유사한 테스트가 가능

  - 전체적인 플로우를 쉽게 테스트 가능

 

2. 단점

  - 애플리케이션의 설정, 모든 Bean 을 모두 로드하기 때문에 시간이 오래걸리고 무겁다.

  - 테스트 단위가 크기 때문에 디버깅이 어려운 편

 

✔ @SpringBootTest

 

  - Spring boot 는 @SpringBootTest 를 통해 스프링 부트 애플리케이션 테스트를 위한 거의 모든 의존성을 제공한다.

  - @SpringBootTest 는 통합 테스트를 제공하는 기본적인 스프링 부트 애노테이션이다.

 

📢 Junit 버전에 따른 유의 사항
   🖍 JUnit4 : @SpringBootTest 기능은 반드시 JUnit 의 SpringJUnit4ClassRunner 클래스를 상속 받은 @RunWith
                    (SpringRynnver.class) 와 함께 사용해야 한다.
   🖍 JUnit5 : 해당 애노테이션 명시할 필요 없음

 

Reference:

https://goddaehee.tistory.com/211

 

[스프링부트 (9)] SpringBoot Test(2) - @SpringBootTest로 통합테스트 하기

[스프링부트 (9)] SpringBoot Test(2) - @SpringBootTest로 통합테스트 하기 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ 스프링 부트 통합 테스트 하기 (@SpringBootTest)] 입니다. : ) 0. 들어가기 앞서 이번 포스

goddaehee.tistory.com

 

 

'Spring' 카테고리의 다른 글

스프링 빈 등록 방법  (0) 2023.04.27
Dependency Injection(DI)과 IoC(Inversion of Control)  (0) 2023.04.27
@RequestBody와 @ResponseBody  (0) 2023.04.27
Spring MVC 패턴  (0) 2023.04.27
Spring Boot 동작 (SSR)  (0) 2023.04.26