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.

Excepción de conexión mientras se ejecuta la Prueba de instrumentación en un dispositivo real.

Tengo un problema no trivial. Creamos un back-end en un dispositivo Android. Utilizando Ktor para el REST-Service.
Estoy tratando de ejecutar una prueba instrumental como:

@HiltAndroidTest
@Config(application = HiltTestApplication::class)
@RunWith(AndroidJUnit4::class)
class RestServiceTest {
    @get:Rule
    var hiltRule = HiltAndroidRule(this)
    @get:Rule
    var instantTaskExecutorRule = InstantTaskExecutorRule()

<pre><code>@Inject
lateinit var testServer: TestServer

private val retrofit = Retrofit.Builder()
    .baseUrl("http://localhost:8080/askp/")
    .addConverterFactory(
        MoshiConverterFactory.create(
            Moshi.Builder().add(KotlinJsonAdapterFactory()).build()
        )
    )
    .build()
private val api = retrofit.create(SuvApi::class.java)

@Before
fun setup() {
    hiltRule.inject()
    Executors.newSingleThreadExecutor().execute {
        testServer.start()
    }
}

@Test
fun successTransactionsHistory() = runBlocking{
    delay(5000)
    val response = api.getTransactionHistory(1)
    Assert.assertNotNull(response)
}
</code></pre>

<p>}

Pero cuando la función de prueba lo llama, arroja una excepción de conexión (ConnectException) ECONNREFUSED (Conexión rechazada).
La prueba se está ejecutando en un dispositivo físico real y yo establezco la conexión de la misma manera que en el código de producción y funciona.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el servidor de prueba no está funcionando correctamente. ¿Ha intentado ejecutar el servidor de prueba en un hilo separado? Parece que el servidor de prueba no se está iniciando a tiempo para que la prueba se ejecute. Podría intentar agregar un retraso antes de que se ejecute la prueba para darle al servidor de prueba tiempo suficiente para iniciarse. También podría intentar ejecutar el servidor de prueba en un hilo separado para asegurarse de que esté en ejecución antes de que se ejecute la prueba.

Comments are closed.