技術空間

JMockit

staticメソッドをモックする方法


TOP > JMockit > staticメソッドをモックする方法



■staticメソッドをモックする方法

JMockitではstaticメソッドもモックすることができる。やり方は簡単。通常のstaticメソッドを呼ぶのと同じように「クラス名.メソッド()」の形式で記述するだけである。

new Expectations() {{
    MyCalendar.getToday();
    result = "2015/12/01";
}};

ここで注目すべきは@Mockedでモックするのはインスタンスであるのに、staticメソッドもモックが可能ということである。

以下サンプルコード。

MockitTest.java
package mockittest4;

import static org.junit.Assert.*;
import org.junit.Test;
import mockit.Expectations;
import mockit.Mocked;

public class MockitTest {

    @Mocked
    private MyCalendar myCal;
    
    @Test
    public void testIsDecember() {

        new Expectations() {{
            // staticメソッドのモック
            MyCalendar.getToday();
            result = "2015/12/01";
        }};

        Sample sample = new Sample();
        assertTrue(sample.isDecember());
    }
}
Sample.java
package mockittest4;

public class Sample {

    /** 現在日が12月か判定 */
    public boolean isDecember() {

        String month = MyCalendar.getToday().split("/")[1];

        if("12".equals(month)){
            return true;
        }
        return false;
    }
}
MyCalendar.java
package mockittest4;

import java.text.SimpleDateFormat;
import java.util.Calendar;

public class MyCalendar {

    // staticメソッド
    public static String getToday() {
        Calendar cal = Calendar.getInstance();
        return new SimpleDateFormat("yyyy/MM/dd").format((cal.getTime()));
    }
}


TOP > JMockit

Tweet ̃Gg[͂ĂȃubN}[Nɒlj
技術空間