2013-03-10 11 views
17

Jestem nowy w testowaniu Androida i próbuję utworzyć ApplicationTestCase za pomocą MockContext.Jak korzystać z android.test.mock MockContext?

Oto mój kod i występuje błąd (java.lang.NoClassDefFoundError: android/content/Context)

jestem docenić dać mi kilka przykładów.

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

} 

Dzięki

dodałem pełne błędów

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

proszę pisać pełną StackTrace. –

Odpowiedz

4

wierzę, że MockContext jest naprawdę tylko MockContext. Ma on zapewnić wystarczającą funkcjonalność do uruchamiania testów, ale nie powinien wykonywać prawdziwych zadań interfejsu użytkownika.

Od docs na http://developer.android.com/reference/android/test/mock/MockContext.html

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

Jeśli używasz testy UI/integracja, chciałbym spojrzeć na http://developer.android.com/tools/testing/testing_ui.html