使用 Robolectric 3.6.1 时出现 java.lang.IllegalAccessError

标签 java android junit robolectric robolectric-gradle-plugin

当我运行 JUnit 测试时,它抛出以下错误:
java.lang.IllegalAccessError:试图从类 org.robolectric.RobolectricTestRunner$1 访问字段 org.robolectric.annotation.Config$Builder.sdk

RobolectricTestRunner.java(3.6.1)

似乎有问题

screenshots

截图中的代码在robolectric-3.6.1-resources.jar

环境:

  • JUnit:4.12
  • 机器人电子 3.6.1
  • Android Gradle 插件:2.3.3
  • 安卓工作室:3.0.1
  • 操作系统:MacOS 10.13.2

谁能帮帮我?谢谢

最佳答案

我终于明白是怎么回事了。在 app/build.gradle 中,我有以下依赖项:

testCompile 'junit:junit:4.12'
testCompile 'org.assertj:assertj-core:2.6.0'
testCompile 'org.robolectric:robolectric:3.6.1'
testCompile 'org.robolectric:shadows-multidex:3.2.2'

我在 3.2.2 版中有 shadows-multidex 依赖项,它有 org.robolectric:robolectric-annotations:3.2.2 内部。所以,我将shadow-multidex的版本改为3.6.1作为robolectric版本后,一切正常!

关于使用 Robolectric 3.6.1 时出现 java.lang.IllegalAccessError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48026840/

相关文章:

Java 反射 - 访问 protected 字段

android - apk 文件的源代码已恢复,但与我写的不一样

java - 测试引发异常的方法时验证行为

java - jdk8中的String#intern()

java - 生成EAR文件时如何在代码中创建application.xml?

Java注解处理器——字段的字段

android - Firebase PhoneAuthentication 在调试版本中工作但在发布版本中不工作

android - SearchView setOnClickListener 不工作

java - 在测试中启动 minidfscluster

java - 错误: generic array creation with my own object