要测试的方法,调用了一个单例模式写的类。这个类的构造方法又有方法调用,并且j静态成员直接创建。
public class Singleton {
private static Singleton singleton = new Singleton();
private Singleton ()
methodA();
}
public void methodA(){
// dosomething
}
public static Singleton instance(){
return singleton;
}
}
public class A {
public static String methodAA(){
Singleton.instance().methodA();
// dosomething
}
}
@RunWith(PowerMockRunner.class)
@PrepareForTest(Singleton.class)
public ATest {
@Test
public void methodAATest() {
suppressConstructor(Singleton.class);
mockStatic(Singleton.class);
Singleton singleton = mock(Singleton.class);
when(Singleton.instance).thenReturn(singleton);
doNothing().when(singleton).methoadA();
A.methoadAA()
}
}
参考:Mocking a singleton with EasyMock and PowerMock – Redchilliplus's Blog