2017-01-27 26 views
6

ile yeni bir etkinliğin başlatılıp başlatılmadığını kontrol edin Girişimden sonra yeni bir aktivite başlatılırsa, her şeyin yolunda gittiğini biliyorum. Ben bu uygulamaya çalışsa da artık birEspresso

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.test.espresso.intent.Intents.internalIntended(org.hamcrest.Matcher, android.support.test.espresso.intent.VerificationMode, java.util.List)' on a null object reference 

Bu benim Testi sınıftır var:

import android.support.test.rule.ActivityTestRule; 
import android.support.test.runner.AndroidJUnit4; 

import org.junit.Rule; 
import org.junit.Test; 
import org.junit.runner.RunWith; 

import static android.support.test.espresso.Espresso.onView; 
import static android.support.test.espresso.action.ViewActions.click; 
import static android.support.test.espresso.action.ViewActions.typeText; 
import static android.support.test.espresso.intent.Intents.intended; 
import static android.support.test.espresso.intent.matcher.IntentMatchers.hasComponent; 
import static android.support.test.espresso.matcher.ViewMatchers.withId; 

@RunWith(AndroidJUnit4.class) 
public class LoginActivityTest { 

    @Rule 
    public ActivityTestRule<LoginActivity> mLoginActivityActivityTestRule = 
      new ActivityTestRule<>(LoginActivity.class); 

    @Test 
    public void clickLoginButton_ShowsSnackBarRightCredentials() throws Exception { 

     onView(withId(R.id.login_email)).perform(typeText("[email protected]")); 
     onView(withId(R.id.login_password)).perform(typeText("11111111")); 
     onView(withId(R.id.email_sign_in_button)).perform(click()); 

     intended(hasComponent(MainActivity.class.getName())); 

    } 
} 

ben kod satırı bana yardımcı gerektiğini önceki sorularda buldum ama bu hat NullPointer üretir.

amaçlanan (hasComponent (MainActivity.class enter code here .getName()));

Nasıl bu probelm çözebiliriz? Neyi yanlış yapıyorum?

Bu tam yığın izidir:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.test.espresso.intent.Intents.internalIntended(org.hamcrest.Matcher, android.support.test.espresso.intent.VerificationMode, java.util.List)' on a null object reference 
at android.support.test.espresso.intent.Intents$2.check(Intents.java:190) 
at android.support.test.espresso.ViewInteraction$2.run(ViewInteraction.java:170) 
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:428) 
at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
at android.os.Handler.handleCallback(Handler.java:751) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:154) 
at android.app.ActivityThread.main(ActivityThread.java:6077) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 

cevap

1

iyi çözüm bu şekilde kontrol etmektir:

intended(hasComponent(new ComponentName(getTargetContext(), MainActivity.class))); 
+1

, uygulama MainActivity gider, fakat zaman aşımı ile test sonuçları. – SpyZip

9

lefteris' solüsyon ya da bu kod çalışır:

intended(hasComponent(MainActivity.class.getName())); 

Ancak ActivityTestRule değerini IntentsTestRule olarak değiştirmeyi unutmayın. O. Benim için bu olmuyor

@Rule 
public IntentsTestRule<LoginActivity> mLoginActivityActivityTestRule = 
      new IntentsTestRule<>(LoginActivity.class); 
+0

ikinci satır anahtar oldu. teşekkürler :) – isudansh

+0

Kullanımdan önce MainActivity'i ön planda nasıl hazırlanır? Amaçlı (hasComponent (MainActivity.class.getName())); '? Şu anda 'Thread.sleep (2000L) 'tuşunu kullanıyorum; düğmeyi tıkladıktan sonra ve aramadan önce, ama merak ediyorum, belki başka daha iyi bir yol var. – HendraWD