2012-09-20 29 views
17

ile niyet başladı test etmek için, bazı rasgele ekstra veri ile yeni bir niyet başladı test kodumdaki intent, fazladan veri olmadığı için başarısız oldu key.ek veri bir aktivitede

key rastgele olduğundan, aynı anahtarı sağlamak zordur. Bu yüzden, hedefin hedef sınıfının UserActivity olup olmadığını test etmek istiyorum, ancak bunu yapmanın bir yolunu bulamadım.

Çözüm var mı?

cevap

22

generateRandomKey() yöntemini ayrı bir sınıfa ayıklarsanız, Robolectric çalışırken "o rasgele" anahtarın girilmesi için sınamanın (ya da RoboGuice gibi bir şeyi kullanarak) o sınıfın kontrollü bir sürümünü enjekte edebilirsiniz. aslında bilinen bir değer. Ancak üretim kodunda hala rastgele.

Daha sonra etkinliğinizin yarattığı amacı yakalayabilir ve 'anahtar' beklenen test değerini içeriyorsa test edebilirsiniz.


Ancak, doğrudan soru ... cevap

Bir niyet (düğme tıklaması ile bu durumda) oluşturulan eğer test ediyorum ve ben

kullanmak doğru hedefe işaret
public static void assertButtonClickLaunchesActivity(Activity activity, Button btn, String targetActivityName) { 
    btn.performClick(); 
    ShadowActivity shadowActivity = shadowOf(activity); 
    Intent startedIntent = shadowActivity.getNextStartedActivity(); 
    ShadowIntent shadowIntent = shadowOf(startedIntent); 
    assertThat(shadowIntent.getComponent().getClassName(), equalTo(targetActivityName)); 
} 
+0

Teşekkür ederim, bu gerçekten yardımcı oluyor! – Freewind

1

Böyle bir şey mi var?

Assert.assertTrue(UserActivity.class.equals(intent.getComponent().getClassName())); 

veya assertEquals?

İlgili konular