Java PowerMock没有正确地存根静态方法?
我正在尝试使用powermock和Robolectric编写一个非常简单的测试。这是我的密码: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
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文章中描述的相匹配。通常情况下,除非您获得兼容的版本,否则一切都不会起作用,而且并不总是很明显什么版本是兼容的