Robolectric 2.1、Powermock 1.5.1 を使用していますが、単純に静的メソッド テストを作成したいと考えています。引数として false を渡すときに、クラスの静的メソッドが決して呼び出されないことを確認したいだけです。
@RunWith(RobolectricTestRunner.class)
@PrepareForTest(MyStaticClassToTest.class)
public class TestClass {
@Test
public void staticMethod_shouldNeverBeCalled() throws Exception {
MyStaticClassToTest instance = new MyStaticClassToTest();
PowerMockito.mockStatic(MyStaticClassToTest.class);
PowerMockito.when(MyStaticClassToTest.staticMethod(new Context)).thenReturn("wtf?");
instance.iCallStaticMethod(false);
PowerMockito.verifyStatic(times(1)); //i want this to fail, but it keeps passing
MyStaticClassToTest.staticMethod(context);
}
}
私は次のように定義されたクラスを持っています:
public class MyStaticClassToTest {
public void iCallStaticMethod(boolean yesOrNo){
if(yesOrNo) staticMethod(new Context());
}
public static String staticMethod(Context androidContext){
//do something...
return null;
}
}
テストに合格し続けるのはなぜですか? 静的メソッドが呼び出されないことを確認したい。