Jaki jest zalecany sposób wykonania tego programowo?
Jedyną możliwą opcją jest uruchomienie polecenia ADB adb shell pm clear packageprzed testem. Największym problemem jest to, że połączenie wykonywania testów i poleceń powłoki jest rodzajem bólu głowy.
Jednak my (w Mediafe) przyszliśmy z rozwiązaniem, które może działać na zwykłym, nierootowanym urządzeniu. Wszystko, co musisz zrobić, to dodać adnotację. Cała reszta jest wykonywana przez uruchomienie prostego skryptu bash .
Po prostu dodaj @ClearDataadnotację przed DOWOLNYM z testów i tada 🎉, polecenie czyszczenia ADB zostanie wykonane przed wykonaniem testu.
Oto przykład takiego testu:
@Test
@ClearData
public void someTest() {
// your test
}
Pomysł jest następujący
- Przeczytaj wszystkie testy za pomocą
adb shell am instrument -e log true
- Utwórz plan wykonania, analizując dane wyjściowe z (1)
- Uruchom plan wykonania wiersz po wierszu
Korzystając z tego samego pomysłu, są to wszystkie opcje, które możesz łatwo wesprzeć:
- Wyczyść dane
- Wyczyść pasek powiadomień
- Parametryzuj
- Filtruj i uruchamiaj według tagów
Używaj tylko adnotacji. Lubię to:
@Test
@ClearData
@Tags(tags = {"sanity", "medium"})
@Parameterized.Repeat(count = 3)
public void myTest() throws Exception {
String param = params[index];
// ...
}
Premia! 🎁 Dla każdego niezaliczonego testu:
- Zbierz Logcat + stacktrace
- Nagraj wideo (mp4)
- Zrzut bazy danych (sqlite)
- Zrzuć domyślne wspólne preferencje (xml)
- Zbieraj pliki zrzutów, takie jak: bateria, netstats i inne.
Ogólnie rzecz biorąc, łatwo jest dodać więcej opcji, ponieważ testy są wykonywane jeden po drugim ze skryptu bash, a nie z zadania gradle.
📗 Pełny post na blogu : https://medium.com/medisafe-tech-blog/running-android-ui-tests-53e85e5c8da8
📘 Kod źródłowy z przykładami : https://github.com/medisafe/run-android-tests
Mam nadzieję, że to odpowiada 6 lat na pytanie;)