android - 为 Gradle 设置 Deckard。 Robolectric 测试错误

标签 android testing gradle robolectric build.gradle

我正在尝试使用 Robolectric deckard-gradle 创建一个项目 一切正常,但是当我运行 robolectric 测试时,构建失败并出现异常:

cd my-project
./gradlew clean test

1 test completed, failed
:testDebug FAILED

java.lang.IllegalArgumentException
at org.objectweb.asm.ClassReader.<init>(Unknown Source)
at org.objectweb.asm.ClassReader.<init>(Unknown Source)
at org.robolectric.bytecode.AsmInstrumentingClassLoader.findClass(AsmInstrumentingClassLoader.java:140)
at org.robolectric.bytecode.AsmInstrumentingClassLoader.loadClass(AsmInstrumentingClassLoader.java:98)
at org.robolectric.SdkEnvironment.bootstrappedClass(SdkEnvironment.java:45)
at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:205)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.robolectric.RobolectricTestRunner$1.evaluate(RobolectricTestRunner.java:177)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:86)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:49)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:69)
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:50)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
at com.sun.proxy.$Proxy2.processTestClass(Unknown Source)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:103)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.messaging.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:355)
at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:64)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:744)

另一方面,运行 Espresso 测试时不会发生任何错误

环境:

Gradle 1.10

JDK 8

Android SDK 的最后更新

谢谢!

最佳答案

我也遇到了这个问题,我会在这里留下一个答案,以防它帮助其他人在搜索这个错误时遇到这个帖子。对我来说,是 Robolectric 的版本(或者更具体地说,它依赖的 ASM 版本)不适用于 Java 8。从 Robolectric 2.2 升级到 2.3 为我解决了这个问题。

关于android - 为 Gradle 设置 Deckard。 Robolectric 测试错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22695115/

相关文章:

java - 如何将 Spring @Autowired 所需的属性设置为 false 以进行测试?

jQuery 正则表达式无法正常工作

php - 生成 PHPUnit 报告(失败和通过的测试)

java - gradle从 war 依赖项中导入了什么,我如何控制/操纵 war 内容?

android - isValidFragment Android API 19

php - Android 应用程序不发送图片到数据库 PHP MYSQL

android - adb -d shell "run-as ..."不适用于 Android O

android - 当我尝试在 UBUNTU 14.04 上的 Android Studio 中使用 Gradle 进行编译时,不断出现此错误

gradle - 使用Spock模拟groovy脚本

javascript - react-native app 已经启动,现在添加导航