반응형

테스트할 대상 클래스

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
    }
}

 

반응형