es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo abrir/navegar múltiples fragmentos en pruebas de espresso en Android.

Quiero probar un flujo completo de éxito en mi Navegación de Fragments utilizando Android Espresso.

Por ejemplo, aquí hay dos fragments y quiero abrir el primero y verificar algo, luego quiero abrir el segundo. De la misma manera, quiero probar todo el escenario completo (A->B->C->D).

He intentado usar dos escenarios de fragmentos y poblar, pero no funciona correctamente.

fagmentScenario = launchFragmentInContainer(themeResId = R.style.Theme)
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para probar un flujo completo de éxito en la navegación de fragmentos utilizando Android Espresso, podemos seguir los siguientes pasos:

    1. Lanzar el escenario del fragmento inicial (Fragmento A en este caso) utilizando el método launchFragmentInContainer.
    2. Realizar las acciones y verificaciones necesarias en el Fragmento A.

    3. Obtener la instancia de NavController utilizando el método Navigation.findNavController.

    4. Utilizar el método navigate de NavController para realizar la navegación al Fragmento B.

    5. Lanzar el escenario del Fragmento B utilizando el método launchFragmentInContainer.

    6. Realizar las acciones y verificaciones necesarias en el Fragmento B.

    7. Repetir los pasos 3 al 6 para navegar al Fragmento C y al Fragmento D.

    8. Finalmente, verificar que se haya llegado al destino deseado (Fragmento D) utilizando las aserciones apropiadas.

    Fragmento de código de muestra para este flujo:

    // Lanzar Fragmento A
    val scenarioA = launchFragmentInContainer<mifragmentoa>()
    
    // Realizar las acciones y verificaciones necesarias en el Fragmento A
    
    // Navegar al Fragmento B
    val controller = Navigation.findNavController(scenarioA.requireView())
    controller.navigate(R.id.action_fragmentA_to_fragmentB)
    
    // Lanzar Fragmento B
    val scenarioB = launchFragmentInContainer<mifragmentob>()
    
    // Realizar las acciones y verificaciones necesarias en el Fragmento B
    
    // Navegar al Fragmento C
    controller.navigate(R.id.action_fragmentB_to_fragmentC)
    
    // Lanzar Fragmento C
    val scenarioC = launchFragmentInContainer<mifragmentoc>()
    
    // Realizar las acciones y verificaciones necesarias en el Fragmento C
    
    // Navegar al Fragmento D
    controller.navigate(R.id.action_fragmentC_to_fragmentD)
    
    // Lanzar Fragmento D
    val scenarioD = launchFragmentInContainer<mifragmentod>()
    
    // Realizar las acciones y verificaciones necesarias en el Fragmento D
    
    // Verificar que se haya llegado al destino final (Fragmento D)
    onView(withId(R.id.fragmentD_layout)).check(matches(isDisplayed()))
    

    Nota: Reemplaza MiFragmentoX con las clases reales de tus fragmentos.

Comments are closed.