是否有任何方法来测试类访问ContentResolver与JUnit?或者我必须使用机器人电力



我有一个这样的测试类:

public class PostRepositoryTest extends AndroidTestCase {
    Context context;
    @Before
    public void setUp() throws Exception {
        context = new Application();
    }
    @Test
    public void testFindAll() {
        PostRepository postRepository = PostRepository.get(context);
        List<Post> all = postRepository.findAll();
        assertEquals(0, all.size());
    }
}

findAll方法只是使用ContentResolver从ContentResolver返回结果。

public List<Post> findAll() {
    Cursor c = new PostSelection().query(context.getContentResolver());
    return listFromCursor(c);
}

在尝试这种方式之前…我是通过使用AndroidInstrumentationTestCase2并启动一个活动来检查所有这些事情来做到这一点的,但我想避免这种情况。

我想把它作为一个单元测试。这可能吗?

这取决于您是否想要在设备上运行此测试用例。如果您想在本地JVM上运行,而不是在设备上运行,请选择robolelectric。如果你想在没有AndroidInstrumentationTestCase2的设备上运行,那么你可以使用AndroidJUnitRunner。它基于Junit4规范。点击这里阅读链接:https://developer.android.com/training/testing/unit-testing/instrumented-unit-tests.html

查看代码示例了解基本思想:https://github.com/googlesamples/android-testing/tree/master/unittesting/BasicUnitAndroidTest

如果你根据上面的链接设置你的测试套件,那么你不需要扩展任何类或启动一个活动。您可以使用以下代码获取上下文对象:
InstrumentationRegistry.getTargetContext();
or
InstrumentationRegistry.getContext();

相关内容

  • 没有找到相关文章

最新更新