Suatu pengujian mungkin gagal karena alasan apa pun, dan terkadang menjalankan kembali pengujian saja sudah cukup untuk membuatnya lolos lagi (karena kelemahan, misalnya karena masalah pada infrastruktur yang mendasarinya). Anda dapat mengkonfigurasi Tradefed untuk melakukan percobaan ulang secara otomatis.
Inti dari coba ulang otomatis adalah menghindari menjalankan ulang semua pengujian; itu hanya menjalankan kembali pengujian yang gagal, sehingga menghemat banyak waktu eksekusi.
Tradefed juga mendukung pengujian yang dijalankan beberapa kali untuk mendeteksi kelemahan melalui fitur iterasi . Dalam hal ini, semua pengujian akan dijalankan kembali, dan pengujian akan gagal jika salah satu iterasi gagal.
Aktifkan percobaan ulang otomatis
Percobaan ulang otomatis dikontrol melalui objek RetryDecision yang menyediakan dua opsi untuk mengaktifkan fitur: max-testcase-run-count
dan retry-strategy
.
max-testcase-run-count
menentukan jumlah percobaan ulang atau iterasi yang akan dilakukan. Ini menetapkan batas atas untuk menghindari percobaan ulang selamanya. retry-strategy
mendorong keputusan tentang cara mencoba lagi; lihat bagian berikut untuk lebih jelasnya.
Nonaktifkan percobaan ulang otomatis
Gunakan opsi berikut:
--retry-strategy NO_RETRY
Coba lagi kegagalan
Untuk mencoba kembali kegagalan pengujian, gunakan opsi berikut:
--retry-strategy RETRY_ANY_FAILURE --max-testcase-run-count X
Ini akan mencoba ulang kegagalan hingga berhasil atau hingga jumlah maksimum percobaan ulang tercapai, mana saja yang lebih dulu.
Iterasi
Untuk menjalankan kembali pengujian selama beberapa waktu, opsi berikut dapat digunakan:
--retry-strategy ITERATIONS --max-testcase-run-count X
Seperti apa hasilnya?
Pelapor hasil secara default akan menerima hasil gabungan dari semua upaya.
Misalnya: Fail
dan Pass
untuk RETRY_ANY_FAILURE
akan menghasilkan Pass
gabungan karena percobaan ulang berhasil menyelesaikan kegagalan.
Ada kemungkinan bagi reporter untuk menerima hasil non-agregat. Untuk melakukannya, mereka perlu memperluas antarmuka ISupportGranularResults yang mendeklarasikan dukungan untuk hasil granular (non-agregat).
Detail implementasi
Untuk mengaktifkan coba ulang otomatis untuk menjalankan kembali kegagalan pada tingkat kasus pengujian, terapkan ITestFilterReceiver .
Jika Anda tidak dapat mengimplementasikan ITestFilterReceiver, Anda dapat mengimplementasikan IAutoRetriableTest untuk mengontrol cara pengoperasian ulang secara manual. InstalledInstrumentationsTest adalah contoh implementasi antarmuka tersebut.