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));
}}
应该影响真正的数据库以及应该使用Real ContentRescolver。
我怎么能这样呢?
答案 0 :(得分:1)
您可以使用Robolectric来测试真正的内容提供程序,从而影响真正的sqlite数据库。
Robolectric是Android框架的一个实现,可以在任何JVM中运行,因此可以用于测试。
请注意,sqlite数据库将存在于计算机上的临时文件夹中,而不是电话或模拟器上。
如果您希望测试在真实手机中进行,您应该查看Instrumented tests