我有一个这样的测试类:
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
并启动一项活动来检查所有这些内容,但我想避免这种情况。
我想将此作为单元测试。有可能吗?
答案 0 :(得分:0)
这取决于您是否要在设备上运行此测试用例。如果要在本地JVM上运行而不是在设备上运行,请转到Robolectric。 如果您想在没有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();