[스프링부트] Spring Boot JUnit

Harry park·2022년 1월 2일
0

SpringBoot

목록 보기
9/11
post-thumbnail

스프링부트 JUnit

  • TDD (Test-driven Development)
    : 테스트 주도 개발에서 사용하지만, 코드의 유지 보수 및 운영 환경에서의 에러를 미리 방지하기 위해서 단위 별로 검증하는 테스트 프레임워크
  • 단위테스트
    : 작성한 코드가 기대하는대로 동작을 하는지 검증하는 절차
  • JUnit
    : Java기반의 단위 테스트를 위한 프레임워크
    : Annotation기반으로 테스트를 지원하며, Assert를 통하여 검증한다.

: JUnit을 활용하지 않고 테스트 코드를 진행하게 된다면,
실제 운영을 해야 할 코드에 계속 수정이 가해지게 되어 안정성이 떨어지게 될 수 있다.
그러므로,junit-jupiter, mockito를 활용하여 테스트 코드를 작성하고 동작을 확인하면 된다.

[예시] - Java 에서 활용하는 경우

build.gradle에 아래의 dependency를 주입하여야 한다.

  • junit-jupiter
  • Mockito
  • Mockito JUnit Jupiter
@ExtendWith(MockitoExtension.class)
public class UsCalculatorTest {

    @Mock
    public MarkApi markApi;

    @BeforeEach
    public void init(){
        Mockito.lenient().when(markApi.connect()).thenReturn(3000);
    }

    @Test
    public void testHello() {
        System.out.println("hello JUnit");
    }

    @Test
    public void dollarTest() {

        MarkApi markApi = new MarkApi();
        UsCalculator usCalculator = new UsCalculator(markApi);
        usCalculator.init();
        Calculator calculator = new Calculator(usCalculator);

        Assertions.assertEquals(22000, calculator.sum(10, 10));
    }

    @Test
    public void dollarMockTest() {

        UsCalculator usCalculator = new UsCalculator(this.markApi);
        usCalculator.init();
        Calculator calculator = new Calculator(usCalculator);

        Assertions.assertEquals(22000, calculator.sum(10, 10));

    }
}

스프링 부트 Web MVC CRUD 테스트

Post 요청에 대한 RestController Method

RestController Test Class

  • WebMvcTest Annotation 을 사용하여, 대상 class 지정
  • Component 주입을위하여 Import Annotation 사용
  • MockBean

테스트 커버리지

  • Jacoco
    : Java코드의 코드 커버리지를 체크하는 라이브러리
    : 결과를 html, xml, csv로 확인이 가능하다.
    [설정방법]
    1) build.gradle plugins 항목에 id 'jacoco' 추가
    2) gradle 탭에 Tasks > Verification > Test 실행
    (jacocoTestReport발행을 위해서는 test가 먼저 실행되어야 함)
profile
Jr. Backend Engineer

0개의 댓글