Я думаю, что в моем случае были русские символы в пути (все проекты были в папке пользователя). Когда я помещал решение в другую папку (прямо на диск), все стало нормально.
Проблема заключается в том, что тест завершается до вызова обратного вызова, и 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())
}
}