[Java]@Mock 또는 @Spy를 지정했는데 Object가 null로 초기화 될 때

SpringBoot에서 단위테스트를 진행할 때, Service 에 @Mock, @Spy 를 적용했는데, 테스트 실행 시 NullPointExceptioin 이 발생하는 경우가 있다.

null이 발생한 이유는 간단하다. Mock을 초기화하는 과정이 빠져있어서다.

이 경우 2가지 해결책이 있다.

  • JUnit4 패키지(org.junit.Test) @Test 어노테이션을 사용하고, MockitoAnnotations.initMocks(this)를 이용해 초기화하거나
  • JUnit5 패키지(org.junit.jupiter.api.Test) @Test 어노테이션을 사용하면된다.(자동으로 초기화 해준다.)
@Before
public void setUp() {
    MockitoAnnotations.initMocks(this); // JUnit4에서 사용하는 경우 추가해 줌
}

JUnit5와 JUnit4의 차이점은 아래와 같으니 참고하자.

구분JUnit4JUnit5
자바버전Java 5이상Java 8이상
아키텍처All in oneJUnit Plaform
JUnit Jupiter
JUnit Vintage
어노테이션@BeforeClass, @AfterClass
@Before, @After
@Ignore
@Category
@BeforeAll, @AfterAll
@BeforeEach, @AfterEach
@Disable
@Tag
@Test 패키지org.junit.Testorg.junit.jupiter.api.Test

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다