我尝试在我的 android 项目中使用 PowerMock 和 Robolectric 来模拟静态方法。我正在使用gradle。但我收到以下异常:
Caused by: java.lang.IllegalStateException: PowerMockRule can only be used with the system classloader but was loaded by org.robolectric.bytecode.AsmInstrumentingClassLoader@7e61b85
at org.powermock.modules.junit4.rule.PowerMockRule.<clinit>(PowerMockRule.java:35)
... 47 more
Run Code Online (Sandbox Code Playgroud)
我的测试类看起来像这样:
...
import org.junit.Rule;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.modules.junit4.rule.PowerMockRule;
import org.powermock.modules.agent.PowerMockAgent;
import org.powermock.core.classloader.annotations.*;
import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.powermock.modules.junit4.rule.PowerMockRule;
@RunWith(RobolectricTestRunner.class)
@PowerMockIgnore({ "org.mockito.*", "org.robolectric.*", "android.*" })
@Config(manifest = "./src/main/AndroidManifest.xml",emulateSdk = 18)
public class MyTest {
@Rule
public PowerMockRule rule = new PowerMockRule();
@Test
public void test() {
...
}
}
Run Code Online (Sandbox Code Playgroud)
完整的 gradle 文件(删除了一些真正不相关的内容):
apply plugin: …Run Code Online (Sandbox Code Playgroud)