运行Android测试时为什么会出现非法访问错误?

Jan*_*usz 6 android unit-testing

在模拟器上运行我的Android测试时,我得到以下堆栈跟踪:

java.lang.NoClassDefFoundError: client.HttpHelper
at client.Helper.<init>(Helper.java:14)  
at test.Tests.setUp(Tests.java:15)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:164)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:151)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:425)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1520)
Caused by: java.lang.IllegalAccessError: cross-loader access from pre-verified class
at dalvik.system.DexFile.defineClass(Native Method)
at dalvik.system.DexFile.loadClass(DexFile.java:193)  
at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:203)
at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
... 11 more
Run Code Online (Sandbox Code Playgroud)

我从一个额外的项目中运行我的测试.从其他项目加载类似乎存在一些问题.我之前已经进行了测试,但现在他们失败了.测试项目没有问题.

助手班的第14行是:

this.httpHelper = new HttpHelper(userProfile);
Run Code Online (Sandbox Code Playgroud)

我启动了一个负责执行httpqueries的HttpHelper类.我觉得这个助手类不再可用,但我不知道为什么.

小智 4

我遇到了同样的问题,但就我而言,我将库引用添加到应用程序和测试项目中。

通过从测试项目中删除对库的引用并仅保留对应用程序项目的引用,问题得到了解决。java.lang.IllegalAccessError 异常和消息“类已被意外的 DEX 解析”是帮助解决此问题的线索。