2015-03-25 9 views
6

I Unit-Tests gemäß http://tools.android.com/tech-docs/unit-testing-support erstellt haben, aber wenn ich sie laufen erhalte ich eine Ausnahme:Ausnahme läuft JUnit-Tests mit Android Studio: java.lang.NoClassDefFoundError: android/os/Parcel

java.lang.NoClassDefFoundError: android/os/Parcelable 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    at java.lang.Class.getDeclaredMethods0(Native Method) 
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2615) 
    at java.lang.Class.getDeclaredMethods(Class.java:1860) 
    at org.junit.internal.MethodSorter.getDeclaredMethods(MethodSorter.java:54) 
    at org.junit.internal.runners.JUnit38ClassRunner.<init>(JUnit38ClassRunner.java:74) 
    at org.junit.internal.builders.JUnit3Builder.runnerForClass(JUnit3Builder.java:11) 
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26) 
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33) 
    at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:36) 
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:41) 
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:211) 
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:67) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134) 
Caused by: java.lang.ClassNotFoundException: android.os.Parcelable 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    ... 33 more 

Hier ein Ausschnitt aus einem meiner Tests:

package com.aadhk.woinvoice.bean; 

import com.aadhk.woinvoice.util.Constant; 

import junit.framework.TestCase; 

import java.util.ArrayList; 
import java.util.List; 

public class InvoiceCalculatorTest extends TestCase { 
    private static final double EPSILON = 1e-4; 

    public void testNoTaxNoDiscount() { 
    Invoice invoice = new Invoice(); 
    List<InvoiceItem> items = new ArrayList<>(); 
    InvoiceItem item = new InvoiceItem(); 

ich bin mit Android Studio 1.1, mit Android Plugin Version 1.1.3 und Gradle Version 2.2.1.

Mein Code in Frage implementiert die Parceable-Schnittstelle, aber ich hatte gehofft, es gab eine Möglichkeit, diese Tests auszuführen. Die Tests selbst üben oder verwenden Parcable in keiner Weise.

+0

Die Tests laufen von der Kommandozeile Fein ./gradlew testFreeDebug --tests = ‚*. InvoiceCalculatorTest‘ –

+0

ich dies als eine Antwort nicht veröffentlichen, weil ich weiß nicht, warum es fixiert. Ich habe auch Android Studio auf 1.3.0 aktualisiert und plötzlich konnte ich die Tests wieder einzeln durchführen. Das Plugin ist auch 1.3.0 – Fred

Antwort

0

Ich habe das nur mit IntelliJ gemacht, aber ich würde mir vorstellen, dass das auch für Android Studio funktionieren würde.

Ich löste das Problem, indem ich die Run/Debug-Konfiguration für meinen Test änderte und "Alternative JRE verwenden" und eine andere Plattform von Android ausprobierte. Ich würde empfehlen, andere auszuprobieren und zu sehen, ob es das Problem löst. Test Configuration Screenshot