Bunu programlı olarak yapmanın önerilen yolu nedir?
Olası tek seçenek adb shell pm clear packagetestten önce ADB komutunu çalıştırmaktır . En büyük sorun, testlerin yürütülmesini ve kabuk komutlarını birleştiren bir tür baş ağrısının olmasıdır.
Bununla birlikte, (Mediafe'de) sizin için düzenli bir köksüz cihazda çalışabilecek bir çözümle geldik. Tek yapmanız gereken bir açıklama eklemek. Geri kalan her şey basit bash betiği çalıştırılarak yapılır .
Sadece @ClearDataherhangi bir test ve tada before önce açıklama ekleyin , ADB silme komutu test yürütülmeden önce yürütülür.
Bu böyle bir teste bir örnektir:
@Test
@ClearData
public void someTest() {
// your test
}
Fikir aşağıdaki gibidir
- Tüm testleri kullanarak
adb shell am instrument -e log true
- (1) 'in çıktısını ayrıştırarak yürütme planı oluşturun
- Yürütme planını satır satır çalıştırma
Aynı fikri kullanarak bunların hepsi kolayca destekleyebileceğiniz seçeneklerdir :
- Net veriler
- Bildirim çubuğunu temizle
- Parameterize
- Etiketlere göre filtreleme ve çalıştırma
Yalnızca ek açıklamaları kullanın. Bunun gibi:
@Test
@ClearData
@Tags(tags = {"sanity", "medium"})
@Parameterized.Repeat(count = 3)
public void myTest() throws Exception {
String param = params[index];
// ...
}
Bonus! Failed Başarısız olan her test için:
- Logcat + yığın izlemesi topla
- Video kaydet (mp4)
- Döküm DB (sqlite)
- Varsayılan paylaşılan tercihleri döküm (xml)
- Pil, netstats ve diğer gibi dumpsys dosyalarını toplayın.
Genel olarak, testler sınıflandırma görevinden ziyade bash betiğinden tek tek yürütüldüğünden daha fazla seçenek eklemek kolaydır.
📗 tam blog yazısı : https://medium.com/medisafe-tech-blog/running-android-ui-tests-53e85e5c8da8
Examples Örneklerle kaynak kodu : https://github.com/medisafe/run-android-tests
Umarım bu 6 yıl soruya cevap verir;)