gpt4 book ai didi

android - 在 Robolectric 中测试 SQLite 数据库

转载 作者:IT老高 更新时间:2023-10-28 23:20:19 26 4
gpt4 key购买 nike

我正在尝试在我的 Android 应用程序中使用 Robolectric 测试一个简单的 SQLite 数据库。我输入了一些值,但在读取它们时返回 0 行。

我正在使用 SQLiteOpenHelper 类来访问数据库。

// RequestCache extends SQLiteOpenHelper
RequestCache cache = new RequestCache(activity);
SQLiteDatabase db = cache.getWritableDatabase();

// Write to DB
ContentValues values = new ContentValues();
values.put(REQUEST_TIMESTAMP, TEST_TIME);
values.put(REQUEST_URL, TEST_URL);
db.insertOrThrow(TABLE_NAME, null, values);

// Read from DB and compare values
Vector<Request> matchingRequests = new Vector<Request>();
db = cache.getReadableDatabase();
Cursor cursor = db.query(TABLE_NAME, SEARCH_URL_RETURN_COLUMNS, SEARCH_URL_WHERE, new String[] {url}, null, null, ORDER_BY, null);
int id = 0;

while(cursor.moveToNext()) {
long timestamp = cursor.getLong(0);
Request request = new Request(id++);
request.setUrl(url);
request.setCreationTimestamp(new Date(timestamp));
matchingRequests.add(request);
}


// Assert that one row is returned
assertThat(matchingRequests.size(), equalTo(1)); // fails, size() returns 0

在 robolectric 外部调试代码时,这将按预期工作。我做错了什么还是无法使用 Robolectric 测试 SQlite 数据库?

最佳答案

Robolectric 2.3 使用 SQLite 的真实实现,而不是阴影和伪造品的集合。现在可以编写测试来验证真实的数据库行为。

关于android - 在 Robolectric 中测试 SQLite 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7320820/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com