小编vet*_*tho的帖子

不能将 PowerMock 与 Robolectric 和 Gradle (android) 一起使用

我尝试在我的 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)

android powermock gradle robolectric

6
推荐指数
1
解决办法
3750
查看次数

标签 统计

android ×1

gradle ×1

powermock ×1

robolectric ×1