Correcto, entonces tengo una MainActivity que tiene una vista con ID fragment_container .
Ahora quiero escribir una prueba para verificar que se muestre esa vista.
@RunWith(AndroidJUnit4::class) class Foo{ @get:Rule val mainActivity = ActivityTestRule(MainActivity::class.java) @Test fun startsWithFragmentContainerVisible(){ onView(withId(R.id.fragment_container)) .check(matches(isDisplayed())) } }Ok... eso funciona SI el usuario ya ha iniciado sesión.
Porque si no lo está, la actividad se disparará
private fun startLoginCycle(){ startActivity(Intent(this,LoginActivity::class.java)) } Lo que significa que fragment_container está oculto detrás de LoginActivity .
Aquí está mi MainActivity.onCreate :
private lateinit var um: IUserManager override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) um = UserManager(this) //user manager needs a context to get access to shared preferences /* [...] */ val au = um.activeUser if(!au.isLoggedIn) startLoginCycle() } Dado que esta prueba no requiere ninguna de las funciones del UserManager , me gustaría simular el userManager y hacer que su activeUser simplemente devuelva la simulación de un User que simplemente está conectado.
¿Puedo hacer eso? ¿O necesito escribir un método que verifique si la actividad de inicio de sesión es visible y, de ser así, usar alguna cuenta de prueba para iniciar sesión en la aplicación?