使用Jmockit來mock類的靜態方法,網上有很多mock單個類靜態方法的例子。有使用Expectations,還有使用MockUp的。
但是如果想在一個測試方法中mock多個類的靜態方法,該怎么寫呢。
先看mock一個類的靜態方法
public class MethodClass { public static String publicStaticMethod() { return "Original public Static Method !"; } public String publicMethod() { return "Original public Method !"; } }
使用Expectations來mock
@Test public void test_mockPublicStatic1() { new Expectations(MethodClass.class) { { MethodClass.publicStaticMethod(); result = "Mocked public static method"; } }; System.out.println(MethodClass.publicStaticMethod());//Mocked public static method MethodClass obj = new MethodClass(); System.out.println(obj.publicMethod());// Original public Method ! }
mock多個類的靜態方法,同時傳入A.class,B.class。按照期望的順序錄制即可。
new Expectations(A.class,B.class) { { A.publicStaticMethod(); result = "Mocked public static method"; B.publicStaticMethod(); result = "Mocked public static method"; } };