Jmockit对类静态方法mock
首先要明确一点,一个类型被注释为@Mocked后,其所有方法包括静态方法都将处于mocked状态
类MethodClass包含一个静态方法与public方法
public class MethodClass
{
public static String publicStaticMethod()
{
return "Original public Static Method !";
}
public String publicMethod()
{
return "Original public Method !";
}
}
用例入参中将MethodClass类型置为mocked状态,所有方法均被mocked
@Test
public void test_mockPublicStatic2(@Mocked final MethodClass c)
{
System.out.println(MethodClass.publicStaticMethod());//null
MethodClass obj = new MethodClass();
System.out.println(obj.publicMethod());// null
}
若只想对静态方法mock,可以使用Expectations(MethodClass.class),对MethodClass部分静态方法进行mock
/**
* 通过Expectations(Object... classesOrObjectsToBePartiallyMocked)只对部分静态函数进行mock,其他方法保持原态
*
*/
@Test
public void test_mockPublicStatic1()
{
//mock静态方法,所以这里可以用类对象
new Expectations(MethodClass.class)
{
{
MethodClass.publicStaticMethod();
result = "Mocked public static method";
}
};
System.out.println(MethodClass.publicStaticMethod());//Mocked public static method
//原有public方法不会被mock
MethodClass obj = new MethodClass();
System.out.println(obj.publicMethod());// Original public Method !
}