android - 执行 ContentProvider 的仪器测试

标签 android android-contentprovider junit4 android-instrumentation

假设我的 ContentProvider 叫做 DogProvider。如何设置我的 Instrumentation 测试框架?当我尝试运行以下命令时,我总是以空 MockContentResolver 结束。

import org.junit.Test;
import org.junit.runner.RunWith;

import android.content.ContentProvider;
import android.database.Cursor;
import android.net.Uri;
import android.support.test.runner.AndroidJUnit4;
import android.support.test.filters.LargeTest;
import android.test.ProviderTestCase2;
import android.support.test.InstrumentationRegistry;
import android.test.mock.MockContentResolver;

import com.bus.proj.data.DogContract;
import com.bus.proj.data.DogProvider;

@RunWith(AndroidJUnit4.class)
@LargeTest
public class ContentProviderTest extends ProviderTestCase2<DogProvider>{

    public ContentProviderTest() {
        super(DogProvider.class, DogContract.CONTENT_AUTHORITY);
    }

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

    @Test
    public void emptyQuery(){
        MockContentResolver contentResolver = getMockContentResolver();
        assertNotNull(contentResolver);//fail happens here
        Uri uri = DogContract.DogEntry.CONTENT_URI;
        Cursor cursor = contentResolver.query(uri,null,null,null,null);
    }

}

最佳答案

在您的测试中,您使用的是 AndroidJunit4 测试运行器,它基于注释(与基于方法名称的 JUnit3 相比)。

这意味着您的 setUp 方法可能未被调用。为了在每次测试之前调用它,您需要使用 @Before 注释,并将您的方法公开:

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

关于android - 执行 ContentProvider 的仪器测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40601882/

相关文章:

java - 更改参数化测试的名称

android - onRequestPermissionsResult 在 HomeActivity 中调用但不在 Fragment 中调用

Android 内容提供商列表

Android,库项目中的内容提供者

java - Maven:测试用例已运行,但未调用测试方法

java - 如何使用 Mockito 实现复合对象

android - 我没有找到ID的 View … fragment YouTubePlayerSupportFragment,它关闭了我的应用程序

android - 如何更新 LiveData 值?

android - 如何为 Google Play 审阅者指定登录凭据

android - 检查 Android 内容 Uri