我正在编写我的第一个Android数据库后端,我正在努力对我的数据库的创建进行单元测试。
目前,我遇到的问题是获取一个有效的上下文对象来传递给我的SQLiteOpenHelper实现。有没有办法在扩展TestCase的类中获取上下文对象?我想到的解决方案是在TestCase的access...but方法中实例化一个活动,然后将该活动的上下文分配给一个我的测试方法可以设置的字段变量,似乎应该有一个更简单的方法。
发布于 2010-01-20 02:01:52
您可以尝试切换到AndroidTestCase。从文档来看,它似乎应该能够为您提供一个有效的上下文来传递给SQLiteOpenHelper。
编辑:请记住,您可能必须在Eclipse的"Android Test Project“中设置测试,因为测试将尝试在模拟器(或真实设备)上执行。
发布于 2016-05-21 00:20:21
您可以使用InstrumentationRegistry
方法来获取上下文:
InstrumentationRegistry.getTargetContext()
-提供目标应用程序的应用程序Context
。
InstrumentationRegistry.getContext()
-提供此工具程序包的Context
。
对于AndroidX,请使用InstrumentationRegistry.getInstrumentation().getTargetContext()
或InstrumentationRegistry.getInstrumentation().getContext()
。
AndroidX新接口:ApplicationProvider.getApplicationContext()
发布于 2012-08-20 22:27:54
根据我的经验,使用AndroidTestCase:getContext()
方法只提供了一个存根上下文。在我的测试中,我在我的主应用程序中使用了一个空的activity,并通过它获得了Context
。我还用ActivityInstrumentationTestCase2
类扩展了测试套件类。看起来对我很管用。
public class DatabaseTest extends ActivityInstrumentationTestCase2<EmptyActivity>
EmptyActivity activity;
Context mContext = null;
...
@Before
public void setUp() {
activity = getActivity();
mContext = activity;
}
... //tests to follow
}
其他人都在做什么?
https://stackoverflow.com/questions/2095695
复制相似问题