2013-07-30 20 views
8

Piszę test jednostkowy z Robolectric. Konfiguracja wygląda tak, jak przekazać kontekst podczas tworzenia nowego zamiaru. Poszedłem za przykładem z pytania this.robolectric 2 - tworzymy aktywność testową z intencją

Nie @David mówi

"... i needed to give a Context and the class of the Activity it was being sent to"

Jak dokładnie można to zrobić?

Uwaga: Proszę nie oznaczyć go jako duplikatu powyższego linku. Zadaję nowe pytanie, ponieważ nie mogłem tam dodać komentarza.

+0

możliwe duplikat [robolectric 2 - tworzenie działalność z zamiarem] (http://stackoverflow.com/questions/17195761/robolectric-2-create-activity-with-intent) – tir38

Odpowiedz

0
miAirlineActivity = Robolectric.buildActivity(MiAirlineActivity.class).create().get(); 
Intent intent = new Intent(); 
intent.putExtra(EMPLOYEEID_EXTRA, "username"); 
miAirlineActivity.setIntent(intent); 
miAirlineActivity.onCreate(new Bundle()); 

ten rozpocznie swoją działalność z pożądanym zamiarem

+0

dzięki @ user2483079 , ale rozwiązanie daje błąd: 'testSetBasketForExistingSeatWhoHasDeferredPurchases (com.miairline.activities.MiAirlineActivityTest) Czas, który upłynął: 1.375 s <<< ERROR! java.lang.NullPointerException \t na com.miairline.activities.MiAirlineActivity.onCreate (MiAirlineActivity.java:540) ' jest to punkt, gdzie kod nazwał getIntent(), a intencją jest null. – vikas

8

Spróbuj

Intent intent = new Intent(Robolectric.getShadowApplication().getApplicationContext(), 
       MiAirlineActivity.class); 
2

Zbuduj swoją działalność z zamiarem

Intent intent = new Intent(HOW_TO_PASS_CONTEXT_HERE,MiAirlineActivity.class); 
intent.putExtra(EMPLOYEEID_EXTRA, "username"); 
iAirlineActivity = Robolectric.buildActivity(MiAirlineActivity.class).withIntent(intent).create().get(); 

spojrzenie na roboelectric docs here

1

Intencja intencji = nowa intencja (ShadowApplication.getInstance(). GetApplicationContext(), Activity.class);

+2

Proszę sformatować swój kod i dodać wyjaśnienie, aby wyjaśnić korzyści płynące z tej odpowiedzi w porównaniu z innymi. – OhBeWise

0

Nie trzeba tworzyć kontekstu i docelowej klasy aktywności za pomocą konstruktora. Spróbuj tego:

@Before 
public void setUpFor() { 
    Intent intent = new Intent(); 
    intent.putExtra(EMPLOYEEID_EXTRA, "username"); 

    miAirlineActivity = Robolectric.buildActivity(MiAirlineActivity.class) 
          .withIntent(intent).start().get(); 
} 
Powiązane problemy