У меня есть приложение для Android с более чем 50 тестовыми наборами для эспрессо. Большую часть времени тесты работают правильно, но во время некоторых прогонов один тестовый случай (только один) завершается неудачно с отсутствующей таблицей базы данных. Все остальные тестовые примеры используют эту таблицу правильно. Иногда сообщение об ошибке отличается, например:
android.database.sqlite.SQLiteDiskIOException: disk I/O error (code 522 SQLITE_IOERR_SHORT_READ)
Примеры кода доступны по запросу, но это большое приложение, поэтому я сомневаюсь, что смогу вписать все это в сообщение.
Стоит ли просто заменить планшет на тот, который не выбрасывает мои биты?
Еще одно предложение: я могу прогреть виртуальное устройство Android и посмотреть, не произошла ли там ошибка.
Нет - ошибка также иногда возникает на виртуальном планшете. Предположительно, с дорогим хранилищем ThinkPad, а не с дешевым хранилищем на моем планшете ONA.
Причина, по которой я не могу опубликовать исходный код для этого (это просто эспрессо и код комнаты, делают это), - это когда мое приложение быломаленькая проблема не случилась. Только растущее приложение позволило решить проблему.
Тестовая база данных использует реальный файл в папке getExternalFilesDir()
;не база данных в памяти. А переключение на папку getFilesDir()
не исправило ошибки, связанные с повреждением файлов SQLite. (У меня все равно нет подключенной SD-карты.)
Но посмотрите здесь, в сборщике базы данных: buildee.allowMainThreadQueries()
.