2016-04-07 29 views
1

Bir parçaya çizilen bir düğmenin varlığını doğrulamak istiyorum. Düğmenin görünürlüğü ve varlığı, Retrofit ile yapılan bir ağ çağrısına/yanıtına bağlıdır.Espresso testlerinde ağ görüşmesine bağlı düğmeyi bekleyin

Eşzamansız doğa nedeniyle, IdlingResource ile gitmem gerektiğini düşündüm. Benim sorunum, true yanıtının isIdleNow() için ne iyi bir yaklaşımın olacağını bilmem. findElementById (R ..) ile elemanın tutuşunu tutmaya çalışmalı mıyım yoksa bu bekletme iddialarını yapmak için başka tipik "Espresso yolu" var mı?

Düzenleme:

while (timeout-- > 0) { 
    try { 
     onView(withId(element)).check(matches(isDisplayed())); 
    } catch (AssertionError ae) { 
     MiscUtil.sleep(1000); 
     continue; 
    } 
    return true; 
} 

Ama bu Espresso esaslara göre değil sanırım:

Güncel çözüm IdlingResource olmadan basitçe. Bir IdlingResource uygulamasından yapılan check-match çağrısının yapılması, tüm thread'ları bir nedenden dolayı askıya aldı.

cevap

1

Eğer Sonradan montaj kullanıyorsanız Ben o zaman cevap

benzer olacaktır eğer OKHttp kullandığınız tahmin edecek (sadece ağ işlemleri için Boşta Kaynak yazmak gerekir.)

Eğer OKHttp kullanırsanız güzel burada kutu rölantide kaynağın dışına vardır: (Eğer hançeri kullanıyorsanız) sadece okhttp müşteri enjekte senin testin kurulumunda https://github.com/JakeWharton/okhttp-idling-resource

, kaynak kayıt (dont aşağı gözyaşı içinde kaydını unutmayın).

Düğme görünürlüğünüzü ve göstergenizi otomatik olarak beklemek otomatik olarak beklenir.

Yan not: onlar özel bir şekilde onları bitmiş özellikle bunları devre dışı bırakmak için bir yol bulmalıyız (animasyonlar devre dışı bırakmak için emin olun, enstrümantasyon testlerinde için en büyük düşman görüşlerinizi animasyon gelince dikkatli olmak test çalışmaları sırasında).