2013-08-04 2 views
2

Я попытался проверить свою активность, но у меня возникла проблема: когда я пытаюсь запустить проект Android JUnit, он не запускается с этого стека проследить:junit.framework.AssertionFailedError: Exception in constructor: testMethod (java.lang.NullPointerException)

junit.framework.AssertionFailedError: Exception in constructor: test (java.lang.NullPointerException 
at android.test.ActivityInstrumentationTestCase2.getActivity(ActivityInstrumentationTestCase2.java:100) 
at com.sogemobile.saytv.api.UploadAvatarTest2.<init>(UploadAvatarTest2.java:16) 
at java.lang.reflect.Constructor.constructNative(Native Method) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 
at junit.runner.BaseTestRunner.getTest(BaseTestRunner.java:118) 
at android.test.AndroidTestRunner.getTest(AndroidTestRunner.java:148) 
at android.test.AndroidTestRunner.setTestClassName(AndroidTestRunner.java:56) 
at android.test.suitebuilder.TestSuiteBuilder.addTestClassByName(TestSuiteBuilder.java:80) 
at android.test.InstrumentationTestRunner.parseTestClass(InstrumentationTestRunner.java:444) 
at android.test.InstrumentationTestRunner.parseTestClasses(InstrumentationTestRunner.java:425) 
at android.test.InstrumentationTestRunner.onCreate(InstrumentationTestRunner.java:370) 
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4382) 
at android.app.ActivityThread.access$1300(ActivityThread.java:141) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1294) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:5039) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
at dalvik.system.NativeStart.main(Native Method) 
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190) 
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175) 
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555) 
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1661) 

Мой тестовый код:

public class UploadAvatarTest2 extends ActivityInstrumentationTestCase2<EmptyActivity_> { 

    public UploadAvatarTest2() { 
     super(EmptyActivity_.class); 
     getActivity(); 
    } 

    public void test(){ 
    } 

} 

Я обнаружил, что проблема "getActivity()" вызов. Если я поставлю точку останова на «super (EmptyActivity_.class)», отладчик даже не остановится на этом. Но если я удалю «getActivity()», отладчик строк остановится. Это выглядит фантастически, но это правда :) Я попытался перезапустить eclipse/emulator, но это ни на что не влияет.

Что делать, чтобы решить эту проблему? :(

+0

Вы нашли решение? – Androiderson

ответ

0

Не вызывать метод getActivity() в конструкторе. С его помощью в способе настройки переопределены.

@Override 

public void setUp(){ 
super.setUp(); 
currentActivity=getActivity(); 
... 
... 
} 

идти дальше.

Объявить currentActivity в классе как частный объект от EmptyActivity_