Java Robolectric和Powermock试图模拟静态方法,你没有工作吗?

Java Robolectric和Powermock试图模拟静态方法,你没有工作吗?,java,junit,mockito,powermock,robolectric,Java,Junit,Mockito,Powermock,Robolectric,我使用的是Robolectric 2.1、Powermock 1.5.1,我只想编写一个静态方法测试。我只想验证,当传入false作为参数时,不会调用类的静态方法: @RunWith(RobolectricTestRunner.class) @PrepareForTest(MyStaticClassToTest.class) public class TestClass { @Test public void staticMethod_shouldNeverBeCalled()

我使用的是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;
    }
}

为什么我的考试总是通过?我想让它验证从未调用过静态方法。

为什么没有正确拼写单词?两个框架都使用类装入器自定义。所以我不确定它们是否可以同时使用。将静态调用封装在某个类中,并使用mockito对其进行模拟。或者用powermock重新定义所有Android API调用。你能发布你的确切代码吗?而不是重新打字?您可能在重新键入时出错。上面的摘录有语法错误,因此您无法从实际代码中复制/粘贴它。您是如何运行它的?@C.Ross您的设置是什么样的?PowerMock必须高于某个版本(我相信是1.4或更高版本?)