gpt4 book ai didi

android - ProviderTestCase2.getProvider() 为空

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:50:18 26 4
gpt4 key购买 nike

我正在尝试测试 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();
}
}

旁注:如果在应用程序中使用,则提供程序有效。

提前致谢。

最佳答案

我自己也遇到过这个问题。您需要告诉 AndroidJUnit4 使用 @Before 注释运行 setUp 方法。如果您不这样做,则在您的单元测试运行之前不会调用 setUp 方法。

覆盖 http://developer.android.com/training/testing/integration-testing/content-provider-testing.html 上的 setUp 方法的代码 fragment 具有误导性,并且没有提到您需要 @Before 注释。

尝试以下操作:

@Before
@Override
public void setUp() throws Exception
{
setContext(InstrumentationRegistry.getTargetContext());
super.setUp();
}

关于android - ProviderTestCase2.getProvider() 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30870764/

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