Test Espresso - obsłużenie logowania przez Google/Facebook

0

Witam,

Tak wiem, że Espresso to nie jest może najlepsze narzędzie tego typu, ale generalnie chodzi mi o to, żeby można było obsłużyć logowanie kontem Google i Facebook. Problem jest taki, że np okno wyboru konta Google do zalogowania nie należy do mojej aplikacji, a w związku z tym nagrywając test nie mogę obsłużyć kliknięcia w konto do wyboru

Czy znacie jakiś sposób, żeby taki test nie zatrzymywał się na tym, tzn żeby był w stanie kliknąć w takim oknie?

0

To co mógłbyś zrobić w tym przypadku to zasłonić akcję na przycisku. Wszystko zależy od tego jaką masz architekturę w apce, ale ja bym to widział tak:

Widok:

login_button.setOnClickListener { v-> presenter.loginUser() }

W presenterze skorzystałbym z wstrzykniętej zależności use case'a:

fun loginUser() {
loginUserByGoogleUseCase.run()
}

W LoginUserByGoogleUseCase (ważne, żeby ten use case był opakowany w interface):

fun run() {
// Tutaj należałoby wykonać zapytanie do googlowego sdk z logowaniem
}

Następnie w module który odpowiada za ui testy stworzyć "udawaną" implementację LoginUserByGoogleUseCase. Jeśli jest to opakowane w interface to nie będzie problemu z wstrzyknięciem tego do presentera. Wtedy w ui testach jesteś w stanie sterować tym co zwróci google. Nie zobaczysz okienka do logowania z google, ale bedziesz mógł zwracać errory i dane które potrzebujesz.

0

Implementacja jest taka, jak kazał robić to Google, czyli wzięta stąd: https://github.com/firebase/quickstart-android/tree/master/auth

0

Nic nie stoi na przeszkodzie aby to opakować w jakiś interfejs

0

Nie wiem za bardzo co i jak mam opakowywać w interfejs, na razie jedyne co robię, to nagrywam test w Android Studio i ewentualnie modyfikuję wygenerowany kod

1 użytkowników online, w tym zalogowanych: 0, gości: 1