6

bu çevrede birçok soru vardır biliyor başarısız amaAndroid: Espresso fragmanı veya etkinlik kadar beklemez bu yüzden gösterildiği her deney

ben kullanmaya çalıştı i bana :(yardım etmek bir şey bulamıyorum Bir android uygulaması için UI-Test oluşturmak için Espresso bağımlılık sorunları yenildikten sonra (bazı kütüphaneler diğer kütüphanelerden bağımlı olarak farklı sürümlerde iki kez dahil edildiğinden) hala çalışma testleri oluşturamıyorum ...

I IdlingResource hakkında bilgi edinin ama okurken espresso, ana iş parçacığı ve AsyncTaskPool herhangi bir test yapmadan önce boşta kalsın.

Onunla temasa geçmek için iki etkinlik, bir açılış ekranı ve bir ana etkinlik içeren basit bir uygulama hazırladım. splashscreen Ben de bunun için AsyncTask kullanmaya çalıştı ama hiçbir şey her Test başarısız çünkü düzgün çalışması gibi görünüyor

new Handler().postDelayed(new Runnable() { 
    @Override 
    public void run() { 
    finish(); 
    Intent intent = new Intent(SplashScreenActivity.this, MainActivity.class); 
    startActivity(intent); 
    } 
}, 3000); 

MainActivity

başlamadan önce üç saniye bekledikten için böyle bir şey içeriyor. Tanımlanmış metni içeren bir TextView'un tarafından görünümünde gösteriliyorsa

test sadece kontroller:

onView(withText("DummyText")).check(matches(notNullValue())); 

zaman ... basit bir test oluşturmak o kadar zor olmazdı düşünce

Çünkü api'ye karşı test yapmalıyım> = 16 Espressoya ihtiyacım var. Sadece benim için uiAutomator kullanarak kontrol ettim (api> = 18 için olduğunu biliyorum) ama gösterilecek bir şey için beklemek akıllı mantık var ..... ve mükemmel çalışıyor ...

cevap

5

Nedir etkinliğinizRule? Çünkü eğer SplashScreenActivity ise, test hemen başlayacak ve görünüm splash ekranında değilse onView başarısız olacaktır. Bu görünümü test etmek için doğrudan Ana Verimliliği açmayı deneyin. Espresso'yu bir süredir kullanıyorum ve @Test yöntemlerinin ActivityTestRule olarak tanımlanan etkinliğin yüklenmesi bittiğinde başlayacağını biliyorum.

Bu yardımcı oldu umarım.

İyi şanslar!

+2

Tavsiyeniz için teşekkürler! i 'yanlış' olarak kuralının üçüncü parametre ilan ettikten sonra çalışma var: '@Rule kamu ActivityTestRule mMainActivity = new ActivityTestRule <> (SplascreenActivity.class true, false);' Bunu yapmak gibi davranışları tanımlayabilirim örn. . 'DoNothing() (mDeviceService) .getDevices();' ve 'mSplashscreenActivity.launchActivity (NULL) kullanılarak aktivite el başlar;'. Ayrıca _Handler_ _AsyncTask_ ile değiştirdim ve test işinin beklendiği gibi beklediğini bekledim, kontrol ettim vs… – grumpyshoe

+1

Gerçekten harika! Aferin! – sunlover3

+0

@grumpyshoe Aynı konuyla da ilgileniyorum. Uygulamamda, giriş ekranına otomatik olarak kullanıcı tarafından yönlendirilen bir açılış ekranımız var ancak testim Giriş'e gitmek için beklemiyor ve kullanıcı adı girişi düzenleme metnini aramaya başlıyor. Lütfen bana yardım edebilir misin. – Krishnakant