【问题标题】:Robolectric PowerMock java.lang.NoClassDefFoundError error while running a test运行测试时出现 Robolectric PowerMock java.lang.NoClassDefFoundError 错误
【发布时间】:2017-09-06 19:54:43
【问题描述】:

我想集成 powermock 来测试 firebase 逻辑。我尝试运行测试并得到了这个: java.lang.NoClassDefFoundError: org/mockito/cglib/proxy/MethodInterceptor

这是我的 app.gradle:

testCompile 'junit:junit:4.12'
    testCompile "org.powermock:powermock-module-junit4:1.7.0"
    testCompile "org.powermock:powermock-module-junit4-rule:1.7.0"
    testCompile "org.powermock:powermock-api-mockito:1.7.0"
    testCompile "org.powermock:powermock-classloading-xstream:1.7.0"
    testCompile "org.robolectric:robolectric:3.4.2"
    testCompile 'org.mockito:mockito-core:2.1.0'

这是我的测试:

@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class)
@PowerMockIgnore({ "org.mockito.*", "org.robolectric.*", "android.*" })
@PrepareForTest({FirebaseAuth.class, FirebaseDatabase.class})
public class LoginTest {

    @Before
    public void setUp() {
        PowerMockito.mockStatic(FirebaseAuth.class);
        Mockito.when(FirebaseAuth.getInstance()).thenReturn(Mockito.mock(FirebaseAuth.class));
    }

    @Test
    public void test() {

    }
}

【问题讨论】:

  • 能用powermock支持的最新版mockito吗?例如testCompile 'org.mockito:mockito-core:2.8.9'
  • 另外,将 final Firebase 类包装在您自己的非最终接口中是比使用 Powermock 更好的解决方案

标签: java android mockito powermock robolectric


【解决方案1】:

您正在使用 'org.mockito:mockito-core:2.1.0'"org.powermock:powermock-api-mockito:1.7.0"

要将 PowerMock 与 Mockito 2 一起使用,应使用 "org.powermock:powermock-api-mockito2:1.7.0"

【讨论】:

    【解决方案2】:

    您的类路径中需要 cglib 库。

    我的解决方案是始终从 here 下载“完整”的 powermock ZIP。这些 ZIP 文件包含您使用 PowerMock 所需的所有内容

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-04
      • 2014-09-16
      • 1970-01-01
      • 1970-01-01
      • 2012-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多