Otomatik UI test aracını kullanmam gerekiyor ve Robotium ile Google Espresso arasında kafam karıştı.
İkisi arasındaki temel farklar nelerdir? Birinde var olan ancak diğerinde olmayan özellikler var mı?
Otomatik UI test aracını kullanmam gerekiyor ve Robotium ile Google Espresso arasında kafam karıştı.
İkisi arasındaki temel farklar nelerdir? Birinde var olan ancak diğerinde olmayan özellikler var mı?
Yanıtlar:
Tam açıklama: Ben Espresso'nun yazarlarından biriyim.
Hem Espresso hem de Robotium, enstrümantasyon tabanlı çerçevelerdir, yani test edilen Aktiviteleri incelemek ve bunlarla etkileşim kurmak için Android Cihazları kullanırlar.
Google'da, stok enstrümantasyondan daha uygun olduğu için Robotium'u kullanmaya başladık (bunu yapmak için Robotium geliştiricilerine şapka çıkarıyoruz). Ancak, geliştiriciler için güvenilir testler yazmayı kolaylaştıran bir çerçeve ihtiyacımızı karşılamadı .
Espresso'da Robotium'a kıyasla büyük gelişmeler
Senkronizasyon. Varsayılan olarak, enstrümantasyon testi mantığı, UI işlemlerinden (UI iş parçacığında işlenir) farklı bir (enstrümantasyon) iş parçacığında çalışır. Test işlemlerinin UI güncellemeleriyle senkronizasyonu olmadan, testler kesintiye uğrayacaktır - yani zamanlama sorunları nedeniyle rastgele başarısız olacaktır. Çoğu test yazarı bu gerçeği görmezden gelir, bazıları uyku / yeniden deneme mekanizmaları ekler ve daha da azı daha karmaşık iş parçacığı güvenlik kodu uygular. Bunların hiçbiri ideal değil. Espresso, test eylemlerini ve iddiaları test edilen uygulamanın kullanıcı arayüzü ile sorunsuz bir şekilde senkronize ederek iş parçacığı güvenliğini sağlar. Robotium, yalnızca güvenilmez olmakla kalmayıp aynı zamanda testlerin gereğinden daha yavaş çalışmasına neden olan uyku / yeniden deneme mekanizmalarıyla bu sorunu çözmeye çalışır.
API. Espresso, özelleştirmeye açık, küçük, iyi tanımlanmış ve tahmin edilebilir bir API'ye sahiptir. Çerçeveye, standart hamcrest eşleştiricileri kullanarak bir UI öğesini nasıl bulacağını söylersiniz ve ardından ona bir eylem gerçekleştirmesi veya hedef öğede bir iddiayı kontrol etmesi talimatını verirsiniz . Bunu, test yazarının 30'dan fazla tıklama yöntemi arasından seçim yapmasının beklendiği Robotium API'siyle karşılaştırabilirsiniz. Ayrıca Robotium, getCurrentActivity (zaten akım ne anlama geliyor?) Ve getView gibi tehlikeli yöntemleri ortaya çıkarır, bu da ana iş parçacığı dışındaki nesneler üzerinde işlem yapmanıza izin verir (yukarıdaki noktaya bakın).
Arıza bilgilerini temizleyin. Espresso, bir arıza olduğunda zengin hata ayıklama bilgileri sağlamaya çalışır. Ayrıca, kendi arıza gidericinizle arızaların Espresso tarafından ele alınma şeklini özelleştirebilirsiniz. Bir süredir denemedim, ancak Robotium'un önceki sürümleri tutarsız hata işlemeden muzdaripti (örn. ClickOnView yöntemi SecurityExceptions'ı yutardı).
Önceki bir cevabın aksine, Espresso, önemli sayıda kullanıcıya sahip tüm API sürümlerinde desteklenmektedir (bkz . Http://developer.android.com/about/dashboards/index.html ). Bazı eski sürümlerde çalışır, ancak bunları test etmek kaynak israfı olur. Testlerden bahsetmişken ... Espresso, her değişiklikte kapsamlı bir test paketi (% 95'in üzerinde kapsama alanı ile) ve Google tarafından geliştirilen android uygulamalarının çoğu tarafından test edilir.
Espresso, Robotium'dan çok daha hızlıdır, ancak yalnızca bazı SDK sürümlerinde çalışır.
Dolayısıyla, tüm cihazlarda çalışan bir test istiyorsanız, Roboitum'a gidin. Değilse, espresso için gidin ve bir süre daha beta testçisi olacağınızı unutmayın.