Java PowerMock没有正确地存根静态方法?

Java PowerMock没有正确地存根静态方法?,java,android,mockito,powermock,robolectric,Java,Android,Mockito,Powermock,Robolectric,我正在尝试使用powermock和Robolectric编写一个非常简单的测试。这是我的密码: import org.mockito.Mockito; import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PrepareFor

我正在尝试使用powermock和Robolectric编写一个非常简单的测试。这是我的密码:

import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.robolectric.RobolectricTestRunner;

import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(RobolectricTestRunner.class)
@PowerMockIgnore({ "org.mockito.*", "org.robolectric.*", "android.*" })
@PrepareForTest(BadStaticClass.class)
public class SomeActivityTest {

    @Test
    public void testSomething() {
        PowerMockito.mockStatic(BadStaticClass.class);
        Mockito.when(BadStaticClass.dontWantThisMethod()).thenReturn(false);
        new SomeActivity().usesStatic();
    }
}
基本上,我有一个类“SomeActivity”,它有一个调用
BadStaticClass.dontWantThisMethod()
的方法。我想把那个静态方法去掉

为什么我的代码不起作用

我不断地犯这样的错误:
你正在尝试存根一个最终的方法,你这个淘气的开发人员

我认为PowerMock的全部目的就是不去看它

根据,对于某些版本的JUnit等,您必须包含
@RunWith(PowerMockRunner.class)
。但是,您还需要使用
@RunWith(RobolectrictTestRunner.class)
,并且不能在一个类上指定多个
@RunWith

那怎么办呢

我想您可以保留上面的代码,并引入JUnit
@规则(请参阅:)以及本文中描述的规则。只要确保你检查了你正在使用的JAR的版本,以便它们与另一篇so文章中描述的相匹配。通常情况下,除非您获得兼容的版本,否则一切都不会起作用,而且并不总是很明显什么版本是兼容的