gpt4 book ai didi

java - Android Content Provider 测试真实的内容提供者

转载 作者:行者123 更新时间:2023-11-30 00:57:49 27 4
gpt4 key购买 nike

希望你能帮助我...

tl:dr
我如何编写将使用类IsolatedContextMockContentResolver 的JUnit 测试?
我想影响真正的内容提供者而不是模拟数据库。

一般
我必须在工作中为一个特殊的 ContentProvider 编写 JUnit 测试。这个 Content Provider 连接到一些不同的硬件并在那里设置一些值。
我必须检查硬件值和内容提供商数据库的值。

构建
-> ContentProvider -> 硬件接口(interface) -> 硬件 -> HardwareInterface -> ContentProvider

代码

public class DataLayerTests extends ProviderTestCase2<DataLayer> {

private static final String TAG = DataLayerTests.class.getSimpleName();

MockContentResolver mMockResolver;

public DataLayerTests() {
super(DataLayer.class, Constants.DATA_LAYER_AUTHORITY);
}

@Override
protected void setUp() throws Exception {
super.setUp();
Log.d(TAG, "setUp: ");
mMockResolver = getMockContentResolver();
}

@Override
protected void tearDown() throws Exception {
super.tearDown();
Log.d(TAG, "tearDown:");
}

public void testActiveUserInsert__inserts_a_valid_record() {
Uri uri = mMockResolver.insert(ActiveUserContract.CONTENT_URI, getFullActiveUserContentValues());
assertEquals(1L, ContentUris.parseId(uri));
}}


真实的数据库应该受到影响,并且应该使用真实的 ContentRescolver。我该如何存档?

最佳答案

您可以使用 Robolectric测试真正的内容提供者,影响真正的 sqlite 数据库。

Robolectric 是 Android 框架的实现,可以在任何 JVM 中运行,因此可以用于测试。

请注意,sqlite 数据库将位于您计算机上的一个临时文件夹中,而不是在手机或模拟器中。

如果您希望在真实手机中进行测试,您应该查看 Instrumented tests

关于java - Android Content Provider 测试真实的内容提供者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39876632/

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