ysk(0soo)
Lifealong
ysk(0soo)
전체 방문자
오늘
어제
  • 분류 전체보기 (238)
    • Java (50)
      • whiteship-java-study (11)
      • Java (28)
      • time (6)
    • Spring (68)
      • JPA (15)
      • Spring (1)
      • SpringBoot (1)
      • SpringMVC (6)
      • Spring Security (22)
      • Jdbc (1)
      • RestDocs (14)
      • log (6)
    • Kotlin (3)
    • Web (2)
      • nginx (1)
    • Database (14)
      • MySQL (5)
      • PostgreSQL (1)
      • SQL (1)
      • Redis (4)
    • C, C++ (0)
    • Git (1)
    • Docker (2)
    • Cloud (3)
      • AWS (3)
    • 도서, 강의 (0)
      • t5 (0)
    • 기타 (7)
      • 프로그래밍 (1)
    • 끄적끄적 (0)
    • CS (14)
      • 운영체제(OS) (2)
      • 자료구조(Data Structure) (9)
    • 하루한개 (12)
      • 우아한 테크코스-10분테코톡 (12)
    • 스터디 (12)
      • 클린 아키텍처- 로버트마틴 (2)
      • JPA 프로그래밍 스터디 (10)
    • 테스트 (34)
      • JUnit (19)
      • nGrinder (2)
      • JMeter (0)
    • Infra (3)
    • 프로그래머스 백엔드 데브코스 3기 (0)
    • 디자인 패턴 (3)
    • Issue (4)
    • system (1)
      • grafana (0)
      • Prometheus (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • github

공지사항

인기 글

태그

  • 구조화된 동시성
  • 동등성
  • AccessDecisionVoter 커스텀
  • java
  • StructuredConcorrency
  • 가상 스레드 예외 핸들링
  • DataJpaTest
  • junit5
  • UserDetailsService
  • restdocs enum
  • 정규표현식
  • AccessDecisionManager
  • querydsl
  • 동일성
  • 동시성 제어
  • VirtualThread Springboot
  • AuthenticationException
  • scope value
  • LocalDateTime
  • nginx basic auth
  • nGrinder
  • tree
  • jpa
  • 가상 스레드
  • node exporter basic auth
  • FilterSecurityInterceptor
  • restdocs custom
  • 트랜잭션
  • 인가(Authorization) 처리
  • mysql

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ysk(0soo)

Lifealong

테스트

Java Mockito Void method 테스트

2022. 11. 18. 16:36

Mockito Void Method 테스트 방법

Mockito 프레임워크에서 사용되는 Mockito Verify , Mockito When/Then 및 Mockito의 Mock Methods )와 함께 사용한다.

Test 코드를 작성하다가, Mocking을 하고 Mocking한 method가 void 일때 Mocking이 안되는 경우를 보았을것이다.

Mockito를 사용해서 Void 메소드를 실행, 또는 exception을 Throw 할 수 있다.

일반적으로 mocking하는 것과 크게 다르지 않다.

how?

  • Mockito.doNothing()
모킹할 클래스 클래스 = mock(모킹할 클래스.class);

Mockito.doNothing()
  .when(모킹할 클래스)
  .사용할메소드(매개변수) // 매개변수는 줘도되고 안줘도 된다.

verify(모킹한 클래스).사용할메소드(매개변수);
  • Mockito.doThrow()
모킹할 클래스 클래스 = mock(모킹할 클래스.class);


Mockito.doThrow(예외.class)
  .when(모킹한 클래스)
  .사용할 메소드(매개변수) // 매개변수는 줘도되고 안줘도 된다.

verify(모킹한 클래스).사용한메소드(매개변수)

예제 자바 코드

1. 메소드 실행 테스트

public class MockTest {

    static class TestClass {

        public void print(int value) {
            System.out.println(value);
        }

    }

    @Test
    void voidMethodTest() {
        TestClass mockTestClass = mock(TestClass.class);

        int value = 10;

        doNothing().when(mockTestClass)
            .print(value);

        mockTestClass.print(value);

        verify(mockTestClass)
            .print(value);
    }

}

2. 메소드 실행시 예외 테스트

public class MockTest {

    static class TestClass {

        public void print(int value) {
          if (value == 10) {
                throw new IllegalArgumentException();
            }

            System.out.println(value);
        }

    }

    @Test
    void voidMethodThrowsTest() {
        TestClass mockTestClass = mock(TestClass.class);

        int value = 10;

        doThrow(IllegalArgumentException.class).when(mockTestClass)
            .print(value);

        assertThrows(IllegalArgumentException.class, () -> mockTestClass.print(value));

        verify(mockTestClass)
            .print(value);
    }

}

참조

  • https://stackoverflow.com/questions/16243580/mockito-how-to-mock-and-assert-a-thrown-exception
  • https://www.baeldung.com/mockito-void-methods

'테스트' 카테고리의 다른 글

JaCoCo  (0) 2023.01.05
코드 커버리지(Code coverage)  (0) 2023.01.05
Java Static Method Mocking Test - 자바 스태틱 메소드 테스트  (0) 2022.11.18
Hamcrest (In Java JUnit5)  (0) 2022.11.13
무엇을 테스트 할것인가? 어떻게 테스트 할것인가 - 권용근님  (0) 2022.11.10
    '테스트' 카테고리의 다른 글
    • JaCoCo
    • 코드 커버리지(Code coverage)
    • Java Static Method Mocking Test - 자바 스태틱 메소드 테스트
    • Hamcrest (In Java JUnit5)
    ysk(0soo)
    ysk(0soo)
    백엔드 개발을 좋아합니다. java kotlin spring, infra 에 관심이 많습니다. email : kim206gh@naver.com github : https://github.com/devysk

    티스토리툴바