Örnek sorular
Mq Native Frameworks Espresso XcuitestZorluk 1
Espresso'da bir view ile etkileşim kurup onu doğrulamak için kullanılan standart yapı nedir?
- aBulmak için onView(matcher), etkileşim için .perform(action), doğrulamak için .check(assertion)✓
- bBulmak için onView(matcher), etkileşim için .assert(action), doğrulamak için .perform(assertion)
- cBulmak için findElement(matcher), etkileşim için .click(action), doğrulamak için .verify(assertion)
- dBulmak için waitFor(matcher), etkileşim için .tap(action), doğrulamak için .expect(assertion)
Açıklama:Espresso'nun kanonik zinciri onView().perform().check()'tir. Diğer seçenekler başka framework'lerin isimlendirmelerini karıştırır (Selenium tarzı findElement/click/verify, Detox tarzı waitFor/tap/expect) — bunlar Espresso'nun gerçek API'sinde yoktur.
Mq Native Frameworks Espresso XcuitestZorluk 2
Espresso enstrümante testleri AndroidJUnitRunner ile çalışır. Espresso'nun "in-process" çalışması ne anlama gelir?
- aTest kodu, uygulamadan tamamen ayrı bir işletim sistemi sürecinde çalışır ve onunla IPC üzerinden konuşur.
- bTest kodu, herhangi bir uygulama sürecinden izole olarak Android sistem sunucusu içinde çalışır.
- cTest kodu ve test edilen uygulama aynı süreç içinde çalışır.✓
- dTest kodu uzak bir test lab makinesinde çalışırken uygulama cihazda yerel olarak çalışır.
Açıklama:"In-process", test ile uygulamanın tek bir süreci paylaşması demektir; bu sayede Espresso uygulamanın UI thread'ine doğrudan ve senkron şekilde çağrı yapabilir — tanım budur. Diğer seçeneklerin hepsi out-of-process ya da altyapı seviyesinde bir model tarif eder, Espresso'nun yaptığı bu değildir.
Mq Native Frameworks Espresso XcuitestZorluk 2
Espresso, varsayılan olarak bir sonraki ViewAction'ı çalıştırmadan önce neyi bekler?
- aHer action'dan önce otomatik olarak eklenen sabit 500ms'lik bir gecikmeyi
- bHangi thread'den yapıldığına bakılmaksızın uygulamanın yaptığı herhangi bir ağ isteğini
- cAna thread'in mesaj kuyruğunun ve kayıtlı AsyncTask pool'unun idle olmasını✓
- dCihazın erişilebilirlik servisinin ekran içeriğinin sabitlendiğini bildirmesini
Açıklama:Espresso'nun varsayılan senkronizasyonu ana thread'in mesaj kuyruğunu ve AsyncTask thread pool'unu izler; sabit bir gecikme eklemez, kendi başına keyfi arka-plan thread ağ çağrılarını izlemez ve UI Automator tarzı araçlar gibi erişilebilirlik servisine bağımlı değildir.
Mq Native Frameworks Espresso XcuitestZorluk 2
Bir Espresso testi onView(withId(R.id.submit)) üzerinde NoMatchingViewException fırlatıyor. Bu en doğrudan neyi gösterir?
- aEşleşen view var ama şu anda tıklanabilir durumda değil.
- bO an görüntülenen hiyerarşide verilen matcher ile eşleşen hiçbir view yok.✓
- cHiyerarşide, verilen matcher ile eşleşen birden fazla view var.
- dUygulama süreci, instrumentation bağlanamadan önce çöktü.
Açıklama:NoMatchingViewException özellikle mevcut hiyerarşide sıfır eşleşme bulunduğu anlamına gelir. "Tıklanabilir değil" durumu PerformException olarak ortaya çıkar, birden fazla eşleşme ise NoMatchingViewException değil AmbiguousViewMatcherException fırlatır.
Mq Native Frameworks Espresso XcuitestZorluk 2
Bir Espresso action'ı, hedef view'in görüntülenmediğini bildiren bir PerformException fırlatıyor. Bu sana ne söyler?
- aEşleşen view hiyerarşide var, ama Espresso istenen action'ı üzerinde gerçekleştiremedi.✓
- bMatcher, verilen kriterlere uyan hiçbir view bulamadı.
- cTest runner, test APK'sını hedef cihaza kuramadı.
- dEspresso view'i tespit etti ama erişilebilirlik etiketi olan hiçbir view ile etkileşime girmeyi reddediyor.
Açıklama:Zaten eşleşmiş bir view üzerinde PerformException, view'in bulunduğu ama action'ın gerçekleştirilemediği anlamına gelir; yaygın sebep view'in yeterince görüntülenmemesidir. "Hiç eşleşme yok" durumu NoMatchingViewException'dır, bu değil.
Mq Native Frameworks Espresso XcuitestZorluk 3
Espresso'ya özel bir IdlingResource kaydetmenin temel amacı nedir?
- aEspresso'nun varsayılan idle kontrollerini tamamen atlayarak test çalışmasını hızlandırmak.
- bEspresso'nun varsayılan senkronizasyonunun izlemediği bir iş için ek bir meşgul/idle sinyali vermek.✓
- cEspresso'nun herhangi bir view'i bulabilmesi için gereken erişilebilirlik ağacını üretmek.
- dUI her idle olduğunda otomatik olarak ekran görüntüsü almak.
Açıklama:Özel bir IdlingResource, Espresso'nun devam etmeden önce dikkate aldığı şeyi genişletir — bir sinyal ekler; Espresso'nun mevcut kontrollerini kaldırmaz, erişilebilirlik ağacı üretmez ya da ekran görüntüsü almaz.