Zajmuję się tworzeniem testów automatycznych dla aplikacji na Androida (z wykorzystaniem Robotium). W celu zapewnienia spójności i rzetelności testów każdy test chciałbym rozpoczynać od stanu czystego (testowanej aplikacji). Aby to zrobić, muszę wyczyścić dane aplikacji. Można to zrobić ręcznie w Ustawienia / Aplikacje / Zarządzaj aplikacjami / [Moja aplikacja] / Wyczyść dane
Jaki jest zalecany sposób wykonania tego programowo?
Odpowiedzi:
Możesz użyć narzędzia menedżera pakietów, aby wyczyścić dane z zainstalowanych aplikacji (podobnie jak naciśnięcie przycisku „wyczyść dane” w ustawieniach aplikacji na urządzeniu). Więc używając adb możesz zrobić:
źródło
Error: unknown command 'clear'
.Zgodnie z odpowiedzią @ edovino, sposobem na programowe wyczyszczenie wszystkich preferencji aplikacji byłby
Ostrzeżenie : aplikacja wymusi zamknięcie.
źródło
możesz wyczyścić dane aplikacji SharedPreferences
a jeśli chodzi o czyszczenie bazy danych aplikacji, ta odpowiedź jest poprawna -> Baza danych Clearing Application
źródło
Od wersji API 19 można wywołać ActivityManager.clearApplicationUserData ().
źródło
Sprawdź ten kod, aby:
źródło
Jeśli masz tylko kilka wspólnych preferencji do wyczyszczenia, to rozwiązanie jest znacznie przyjemniejsze .
źródło
Korzystając z kontekstu , możemy wyczyścić pliki specyficzne dla aplikacji, takie jak preferencje, plik bazy danych. Użyłem poniższego kodu do testowania interfejsu użytkownika za pomocą Espresso.
źródło
Najprostszym sposobem na to jest
Spowoduje to wyczyszczenie danych i usunięcie aplikacji z pamięci. Jest to równoważne z opcją wyczyszczenia danych w Ustawieniach -> Menedżer aplikacji -> Twoja aplikacja -> Wyczyść dane.
Spowoduje to całkowite usunięcie danych, a także wymusi zamknięcie aplikacji
źródło
To rozwiązanie naprawdę mi pomogło:
Korzystając z poniższych dwóch metod, możemy wyczyścić dane programowo
źródło
jeśli wersja Androida jest wyższa niż KitKat, możesz jej również użyć
public void onClick (Widok widoku) {
źródło
Jedyną możliwą opcją jest uruchomienie polecenia ADB
adb shell pm clear package
przed 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
@ClearData
adnotację przed DOWOLNYM z testów i tada 🎉, polecenie czyszczenia ADB zostanie wykonane przed wykonaniem testu.Oto przykład takiego testu:
Pomysł jest następujący
adb shell am instrument -e log true
Korzystając z tego samego pomysłu, są to wszystkie opcje, które możesz łatwo wesprzeć:
Używaj tylko adnotacji. Lubię to:
Premia! 🎁 Dla każdego niezaliczonego testu:
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;)
źródło