[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의 차이점은 아래와 같으니 참고하자.
구분 | JUnit4 | JUnit5 |
---|---|---|
자바버전 | Java 5이상 | Java 8이상 |
아키텍처 | All in one | JUnit Plaform JUnit Jupiter JUnit Vintage |
어노테이션 | @BeforeClass, @AfterClass @Before, @After @Ignore @Category | @BeforeAll, @AfterAll @BeforeEach, @AfterEach @Disable @Tag |
@Test 패키지 | org.junit.Test | org.junit.jupiter.api.Test |
최신 댓글