SQLiteException выдает нулевое сообщение?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 SQLiteException выдает нулевое сообщение?

Сообщение Anonymous »

В настоящее время я разрабатываю приложение на Android, используя комнату для настойчивости. В настоящее время я тестирую следующий код: < /p>

Код: Выделить всё

override suspend fun addCounter(counter: Counter): Long = try {
projectDao.insertCounter(CounterMapper.toEntity(counter))
} catch (e: SQLiteException) {
coroutineContext.ensureActive()
Log.e(logTag, "[SQLiteException] Database Error: ${e.message}")
throw RepositoryException(
ErrorResponse(
error = "db_error",
description = e.message ?: "No description provided"
)
)
} catch (e: IllegalStateException) {
coroutineContext.ensureActive()
Log.e(logTag, "[IllegalStateException] Database Error: ${e.message}")
throw RepositoryException(
ErrorResponse(
error = "db_error",
description = e.message ?: "No description provided"
)
)
} catch (e: Exception) {
coroutineContext.ensureActive()
Log.e(logTag, "[Unknown Exception] Database Error: ${e.message}")
throw RepositoryException(
ErrorResponse(
error = "db_error",
description = e.message ?: "No description provided"
)
)
}

< /code>
В частности, я тестирую часть SQLiteException кода. Тестовый код заключается в следующем: < /p>
    @Test
fun `When database throws SQLiteException, Then addCounter throws RepositoryException`() = runTest {
val expected = RepositoryException(ErrorResponse("db_error", ""))
println(exception.message)
coEvery { projectDao.insertCounter(any()) } throws SQLiteException("Test exception thrown.")

try {
underTest.addCounter(validCounter.copy())
fail("Expected RepositoryException to be thrown")
} catch (e: RepositoryException) {
assertEquals(expected.errorResponse.error, e.errorResponse.error)
assertEquals(expected.errorResponse.description, e.errorResponse.description)
}
}
Однако, как вы можете видеть, он должен завершиться неудачно из-за ожидания и пустой строки, но вместо этого должно появиться сообщение «Тестовое исключение».
Однако , когда создается исключение, сообщение в конечном итоге становится нулевым (при условии, что сообщение «Выброшено тестовое исключение»), а код заменяет его на «Описание не предоставлено».
Теперь, насколько я понимаю, заключается в том, что SQLiteException должно предоставлять сообщение, которое я ему дал, но это не происходит.
Есть идеи, почему это может происходить?
Спасибо,

Подробнее здесь: https://stackoverflow.com/questions/793 ... ll-message
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»