2013-06-05 3 views
4

Я пытаюсь запустить простой тест JUnit с Robolectric 2.2, но я получаю следующее с помощью ADT ПАКЕТА 22 Ошибки:java.lang.ClassNotFoundException: android.R

java.lang.NoClassDefFoundError: android/R 
    at org.robolectric.bytecode.Setup.<clinit>(Setup.java:40) 
    at org.robolectric.RobolectricTestRunner.createSetup(RobolectricTestRunner.java:137) 
    at org.robolectric.RobolectricTestRunner.createSdkEnvironment(RobolectricTestRunner.java:115) 
    at org.robolectric.RobolectricTestRunner$3.create(RobolectricTestRunner.java:278) 
    at org.robolectric.EnvHolder.getSdkEnvironment(EnvHolder.java:21) 
    at org.robolectric.RobolectricTestRunner.getEnvironment(RobolectricTestRunner.java:276) 
    at org.robolectric.RobolectricTestRunner.access$100(RobolectricTestRunner.java:57) 
    at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:190) 
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) 
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) 
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) 
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) 
    at org.robolectric.RobolectricTestRunner$1.evaluate(RobolectricTestRunner.java:177) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:300) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) 
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) 
    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.R 
    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) 
    ... 24 more 

код дает мне ошибку следующим образом :

import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.robolectric.RobolectricTestRunner; 
import com.mycomp.myapp.R; 

@RunWith(RobolectricTestRunner.class) 
public class ListToWatchActivityTest { 

    @Test 
    public void shouldHaveApplicationName() throws Exception { 
     String appName = new ListToWatchActivity().getResources().getString(R.string.app_name); 
     assertThat(appName, equalTo("MyApp")); 
    } 

} 

Может кто-нибудь помочь мне понять, почему я получаю эту ошибку?

Спасибо.

+0

должен ли вы действительно создать новый экземпляр такой деятельности? Кроме того, я думаю, вы действительно не хотите сравнивать между именем пакета приложения и «MyApp», поскольку они всегда разные ... –

+0

может быть из-за отсутствия импорта, нажмите ctrl + shft + o, после этого очистите и запустите свой code –

+0

Как вы управляете junit? Maven? Муравей? – sheidaei

ответ

5

Добавить android.jar library to classpath.

+0

Это сработало для меня. Но мне пришлось переместить библиотеку в файле .iml ниже j-unit-4.11. –