2013-03-10 2 views
17

Sono nuovo per i test su Android e sto provando a creare un ApplicationTestCase usando un MockContext.Come utilizzare android.test.mock MockContext?

Ecco il mio codice e si verifica l'errore (java.lang.NoClassDefFoundError: Android/content/Context)

Sono apprezzate di darvi alcuni esempi.

package com.example.defaultmocktest.test; 

import junit.framework.TestCase; 
import android.test.mock.MockContext; 
import android.widget.Toast; 

public class DefaultTestCase extends TestCase { 

    protected void setUp() throws Exception { 
     super.setUp(); 
    } 

    protected void tearDown() throws Exception { 
     super.tearDown(); 
    } 

    public void testSetDayAndWeekSetsCorrectPosition() { 
     Toast.makeText(new MockContext(), "Mocking", Toast.LENGTH_LONG).show(); 
    } 

} 

Grazie

ho aggiunto errori pieni

java.lang.NoClassDefFoundError: android/content/Context 
    at java.lang.Class.getDeclaredMethods0(Native Method) 
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2436) 
    at java.lang.Class.getMethod0(Class.java:2679) 
    at java.lang.Class.getMethod(Class.java:1605) 
    at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestLoader.getTest(JUnit3TestLoader.java:99) 
    at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestLoader.loadTests(JUnit3TestLoader.java:59) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 
Caused by: java.lang.ClassNotFoundException: android.content.Context 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    ... 10 more 
+1

Si prega di inviare la piena stacktrace. –

risposta

4

Credo che la MockContext è davvero solo un MockContext. Ha lo scopo di fornire solo le funzionalità sufficienti per eseguire i test, ma non dovrebbe eseguire attività di interfaccia utente reale.

Dalla documentazione in http://developer.android.com/reference/android/test/mock/MockContext.html

"All methods are non-functional and throw UnsupportedOperationException." 

Se si esegue i test UI/integrazione, vorrei dare un'occhiata a http://developer.android.com/tools/testing/testing_ui.html