Java/Mockito

[Mockito] static getInstance() 메서드 mocking하여 테스트 하기

i5 2021. 10. 8. 01:30
반응형

테스트할 대상 클래스

Class Clock {
    private static Clock sMe;
    
    private Clock() {}
    public static getInstance() { 
        if(sMe == null) sMe = new Clock();
        return sMe;
    }
}

 

테스트 코드

package com.example.mockedstatic;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.mockito.MockedStatic;

import static org.junit.Assert.*;
import static org.mockito.Mockito.*;

public class ClockTest {
    private static MockedStatic<Clock> mStaticClock;
    
    private static Clock mMockClock;

    @BeforeClass
    public static void beforeClass() {
        mStaticClock = mockStatic(Clock.class);
        mMockClock = mock(Clock.class);
    }

    @AfterClass
    public static void afterClass() {
        mStaticClock.close();
    }

    @Test
    public void execute_add() {
        when(Clock.getInstance()).thenReturn(mMockClock);

        // do something
    }
}

 

반응형