2015-03-25 17 views
6

Ho creato test di unità come da http://tools.android.com/tech-docs/unit-testing-support, ma quando li ho eseguito ottengo un'eccezione:test JUnit eccezione in esecuzione con Android Studio: java.lang.NoClassDefFoundError: android/os/Parcelable

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 

Ecco un frammento di uno dei miei test:

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(); 

sto usando Android Studio 1.1, con Android Plugin versione 1.1.3 e la versione 2.2.1 Gradle.

Il mio codice in questione implementa l'interfaccia Parceable, ma speravo che esistesse un modo per eseguire questi test. Gli stessi test non esercitano o utilizzano Parceable in alcun modo.

+0

I test funzionano bene dalla riga di comando ./gradlew testFreeDebug --tests = '*. InvoiceCalculatorTest' –

+0

Io non sto postando questo come una risposta perché non so il motivo per cui risolto. Ho aggiornato anche Android Studio alla 1.3.0 e improvvisamente ho potuto eseguire nuovamente i test individualmente. Il plugin è anche 1.3.0 – Fred

risposta

0

Ci siamo imbattuti in questo usando IntelliJ, ma immagino che funzionerebbe anche per Android Studio.

Ho risolto il problema modificando la configurazione di esecuzione/debug per il mio test e controllando "Usa JRE alternativo" e provando una piattaforma diversa di Android. Consiglierei di provare quelli diversi e vedere se risolve il problema. Test Configuration Screenshot

Problemi correlati