Модульные тесты для обратных вызовов с использованием Junit

Я думаю, что в моем случае были русские символы в пути (все проекты были в папке пользователя). Когда я помещал решение в другую папку (прямо на диск), все стало нормально.

0
задан MaheshGupta 27 February 2019 в 16:21
поделиться

1 ответ

Проблема заключается в том, что тест завершается до вызова обратного вызова, и assert находится в неправильном потоке. Вы должны скопировать результат обратного вызова обратно в основной поток. Используйте CompletableFuture . Если вы хотите не пройти тест по истечении определенного периода времени, вы можете использовать метод get со значением времени ожидания:

@RunWith(AndroidJUnit4::class)
class NetworkApiTest {
    var networkApi: NetworkApi? = null

    @Test
    fun testEmptyToken() {
        val future = CompletableFuture<String>()
        networkApi = NetworkApi("")
        networkApi?.getToken {
            future.complete(it)
        }
        val result = future.get(3,TimeUnit.SECONDS)
        Assert.assertThat(it, isEmptyOrNullString())
    }
}
0
ответ дан Rene 27 February 2019 в 16:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: