Che*_*rra 5 android unit-testing android-contentprovider
我正在尝试测试ContentProvider类,但无法使其工作.
getProvider()继续返回null,但正如我从ProviderTestCase2.setUp()代码中理解的那样,它不应该.
public class NotesProviderTest extends ProviderTestCase2<NotesProvider>
{
...
public NotesProviderTest()
{
super(NotesProvider.class, Contract.AUTHORITY);
}
@Override
protected void setUp() throws Exception
{
super.setUp();
}
public void testNoteProvider__inserts_a_valid_record() throws Exception
{
Note note = new Note(new JSONObject(simpleNoteJson));
NotesProvider provider = getProvider();
Uri insert = provider.insert(Note.URI, note.getContentValues());
assertEquals(1L, ContentUris.parseId(insert));
Cursor cursor = provider.query(Note.URI, null, null, new String[]{}, null);
assertNotNull(cursor);
cursor.close();
}
}
Run Code Online (Sandbox Code Playgroud)
附注:如果在应用程序中使用,提供程序可以正常工作
提前致谢.
cha*_*ter 20
我自己也遇到过这个问题.您需要告诉AndroidJUnit4使用@Before注释运行setUp方法.如果不这样做,则在单元测试运行之前不会调用setUp方法.
用于覆盖http://developer.android.com/training/testing/integration-testing/content-provider-testing.html上的setUp方法的代码片段具有误导性,并未提及您需要@Before注释.
请尝试以下方法:
@Before
@Override
public void setUp() throws Exception
{
setContext(InstrumentationRegistry.getTargetContext());
super.setUp();
}
Run Code Online (Sandbox Code Playgroud)
作为 setUp() 方法的一部分,应该创建 MockContentResolver。使用它来创建和注入提供程序。
请参阅类 MockContentResolver: http://developer.android.com/reference/android/test/mock/MockContentProvider.html
上面链接中示例的部分示例:
@Override
protected void setUp() throws Exception {
super.setUp();
mResolver = new MockContentResolver();
final String filenamePrefix = "test.";
RenamingDelegatingContext targetContextWrapper = new RenamingDelegatingContext(
new MockContext2(), // The context that most methods are delegated to
getContext(), // The context that file methods are delegated to
filenamePrefix);
mProviderContext = new IsolatedContext(mResolver, targetContextWrapper);
mProvider = mProviderClass.newInstance();
mProvider.attachInfo(mProviderContext, null);
assertNotNull(mProvider);
mResolver.addProvider(mProviderAuthority, getProvider());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
889 次 |
| 最近记录: |