Java Android内容提供商测试真正的内容提供商
希望你能帮助我Java Android内容提供商测试真正的内容提供商,java,android,junit,android-contentprovider,Java,Android,Junit,Android Contentprovider,希望你能帮助我 tl:dr 我如何编写JUnit测试,而不是使用类IsolatedContext和MockContentResolver我想影响真正的内容提供者,而不是模拟数据库 概述 我必须在工作中为一个特殊的ContentProvider编写JUnit测试。 此内容提供商连接到一些不同的硬件,并在那里设置一些值我必须检查硬件值和内容提供商数据库的值。 构造 ->内容提供者->硬件接口->硬件->硬件接口->内容提供者 代码 public class DataLayerTests extend
tl:dr
我如何编写JUnit测试,而不是使用类IsolatedContext和MockContentResolver
我想影响真正的内容提供者,而不是模拟数据库
概述
我必须在工作中为一个特殊的ContentProvider编写JUnit测试。 此内容提供商连接到一些不同的硬件,并在那里设置一些值
我必须检查硬件值和内容提供商数据库的值。
构造
->内容提供者->硬件接口->硬件->硬件接口->内容提供者
代码
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));
}}
公共类DataLayerTests扩展了ProviderTestCase2{
私有静态最终字符串标记=DataLayerTests.class.getSimpleName();
MockContentResolver mMockResolver;
公共数据层测试(){
super(DataLayer.class、Constants.DATA\u LAYER\u AUTHORITY);
}
@凌驾
受保护的void setUp()引发异常{
super.setUp();
Log.d(标记“setUp:”);
mMockResolver=getMockContentResolver();
}
@凌驾
受保护的void tearDown()引发异常{
super.tearDown();
Log.d(标签“拆卸:”);
}
公共无效测试活动序列插入有效记录(){
Uri Uri=mMockResolver.insert(ActiveUserContract.CONTENT_Uri,getFullActiveUserContentValues());
assertEquals(1L,ContentUris.parseId(uri));
}}
真实的数据库应该受到影响,同时也应该使用真实的ContentRescolver。 我怎样才能做到这一点呢?您可以使用它来测试真正的内容提供者,从而影响真正的sqlite数据库 Robolectric是Android框架的一个实现,可以在任何JVM中运行,因此可以用于测试 请注意,sqlite数据库将位于计算机上的临时文件夹中,而不是手机或模拟器上
如果你想在真实的手机中进行测试,你应该查看一下谢谢回复,我已经用一个按钮制作了一个真实的应用程序。该应用程序将影响真实数据库。下次我会检查Robolectric。