Saya harus menggunakan alat uji UI Otomatis dan saya bingung antara menggunakan Robotium vs Google Espresso.
Apa perbedaan utama di antara keduanya? Apakah ada fitur yang ada di satu tetapi tidak di yang lain?
android
testing
robotium
android-testing
android-espresso
Androidme
sumber
sumber
Jawaban:
Pengungkapan penuh: Saya adalah salah satu penulis Espresso.
Baik Espresso dan Robotium adalah framework berbasis instrumentasi, yang berarti keduanya menggunakan Instrumentasi Android untuk memeriksa dan berinteraksi dengan Aktivitas yang sedang diuji.
Di Google, kami mulai dengan menggunakan Robotium karena lebih nyaman daripada instrumentasi stok (angkat topi kepada pengembang Robotium untuk membuatnya begitu). Namun, itu tidak memenuhi kebutuhan kami akan kerangka kerja yang membuat penulisan tes yang andal menjadi mudah bagi pengembang.
Kemajuan utama dalam Espresso dibandingkan Robotium:
Sinkronisasi. Secara default, logika pengujian instrumentasi dijalankan pada thread (instrumentasi) yang berbeda dengan operasi UI (diproses pada thread UI). Tanpa sinkronisasi operasi pengujian dengan pembaruan UI, pengujian akan rentan terhadap kegagalan - yaitu akan gagal secara acak karena masalah waktu. Sebagian besar penulis pengujian mengabaikan fakta ini, beberapa menambahkan mekanisme sleep / retry dan bahkan lebih sedikit lagi yang menerapkan kode keamanan thread yang lebih canggih. Tak satu pun dari ini yang ideal. Espresso menjaga keamanan thread dengan menyinkronkan tindakan pengujian dan pernyataan dengan UI aplikasi yang sedang diuji secara mulus. Robotium mencoba untuk mengatasinya dengan mekanisme sleep / retry, yang tidak hanya tidak dapat diandalkan, tetapi juga menyebabkan pengujian berjalan lebih lambat dari yang diperlukan.
API. Espresso memiliki API kecil, terdefinisi dengan baik, dan dapat diprediksi, yang terbuka untuk penyesuaian. Anda memberi tahu framework cara menemukan elemen UI menggunakan pencocokan hamcrest standar, lalu menginstruksikannya untuk melakukan tindakan atau memeriksa pernyataan pada elemen target. Anda dapat membandingkan ini dengan API Robotium, di mana penulis pengujian diharapkan untuk memilih dari 30+ metode klik. Selanjutnya, Robotium mengekspos metode berbahaya seperti getCurrentActivity (apa artinya saat ini?) Dan getView, yang memungkinkan Anda untuk beroperasi pada objek di luar utas utama (lihat poin di atas).
Hapus informasi kegagalan. Espresso berusaha memberikan informasi debug yang kaya saat terjadi kegagalan. Selanjutnya, Anda dapat menyesuaikan cara kegagalan ditangani oleh Espresso dengan penangan kegagalan Anda sendiri. Saya belum mencobanya beberapa lama, tetapi versi Robotium sebelumnya mengalami kegagalan penanganan yang tidak konsisten (misalnya metode clickOnView akan menelan SecurityExceptions).
Bertentangan dengan jawaban sebelumnya, Espresso didukung di semua versi API dengan jumlah pengguna yang signifikan (lihat: http://developer.android.com/about/dashboards/index.html ). Ini berfungsi pada beberapa versi yang lebih lama, tetapi mengujinya akan membuang-buang sumber daya. Berbicara tentang pengujian ... Espresso diuji pada setiap perubahan oleh rangkaian pengujian komprehensif (dengan cakupan lebih dari 95%) serta sebagian besar aplikasi android yang dikembangkan oleh Google.
sumber
Espresso jauh lebih cepat daripada Robotium, tetapi hanya berfungsi pada beberapa versi SDK.
Jadi jika Anda menginginkan pengujian yang berfungsi di semua perangkat, gunakan Roboitum. Jika tidak, pilihlah espresso, dan jangan lupa Anda akan menjadi penguji beta untuk beberapa waktu.
sumber