Android JUnit don';如果对象是可打包的,则无法编译

Android JUnit don';如果对象是可打包的,则无法编译,android,junit,parcelable,Android,Junit,Parcelable,我有一个非常简单的类,并且我已经编写了一个非常简单的Junit测试,它成功了 现在我向类中添加了可打包的工具。我的代码编写得很好,应用程序运行得也很好,但是我的Junit测试不再编译了,因为NoClassDefFoundError:android/os/Parcelable 我不是要测试可打包属性,我只是需要编译测试 我想这是一个配置问题,但我找不到要修改什么来解决这个问题 我在Android Studio 2.3上工作。我已经尝试重新启动android studio/rebuild/clean

我有一个非常简单的类,并且我已经编写了一个非常简单的Junit测试,它成功了

现在我向类中添加了可打包的工具。我的代码编写得很好,应用程序运行得也很好,但是我的Junit测试不再编译了,因为NoClassDefFoundError:android/os/Parcelable

我不是要测试可打包属性,我只是需要编译测试

我想这是一个配置问题,但我找不到要修改什么来解决这个问题

我在Android Studio 2.3上工作。我已经尝试重新启动android studio/rebuild/clean

谢谢你的帮助

java.lang.NoClassDefFoundError: android/os/Parcelable

    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at com.example.me.myapp.PropositionUnitTest.isDeltaCPositiveOrNullIsCorrect1(PropositionUnitTest.java:53)
    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:498)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.mockito.internal.runners.JUnit45AndHigherRunnerImpl.run(JUnit45AndHigherRunnerImpl.java:37)
    at org.mockito.runners.MockitoJUnitRunner.run(MockitoJUnitRunner.java:62)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:117)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:42)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:262)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:84)
    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:498)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Caused by: java.lang.ClassNotFoundException: android.os.Parcelable
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 42 more

突然之间,我开始面临同样的问题,与其他人不同的是,我没有复制或粘贴测试文件到新项目的选项。
我所做的只是从根目录中删除.gradle和.idea文件夹并构建项目。它对我有用

显然,AS有时无法正确地将Android类加载到类路径中进行测试。 手动删除.gradle和.idea文件的另一种方法是清除AS中的缓存并进行清理: 文件>使缓存无效/重新启动
/gradlew clean


否则,只需在终端上运行测试
/gradlew test

我也面临类似的问题。您只需使缓存失效并重新启动。这就是我所做的:

在Android Studio中,文件->使缓存无效/重新启动


然后按“使缓存失效并重新启动”按钮。

几天前我遇到了同样的问题。这以前不是一个问题,所以我认为这可能是最近引入的某种bug。好吧,经过几个小时的努力,我放弃了,创建了一个新项目,复制了所有文件,问题就解决了。我仍然不知道是什么原因造成的。这正是我所想的。我也做了同样的事情:创建一个新的projet并复制文件,我的测试现在正在编译。我想知道我的配置出了什么问题。有趣的是,当我更改这个新创建的项目的路径时,我又遇到了这个问题。这让我怀疑它可能是JDK/SDK/任何问题的相对路径。您也可以尝试将新项目移动到其他位置--我很想知道您是否再次遇到此问题。谢谢!这似乎是某种与studio缓存相关的问题。即使重新启动和使缓存无效对我不起作用,它也对我有效。看到它在工作,我既高兴又沮丧。。。。这是一个奇怪的bug。对我来说,删除这个Goelle FordDy@ @娜塔丽就足够了。如果这个或任何答案都解决了你的问题,请点击检查标记来考虑。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做。