我需要为一个活动编写测试,该活动可以插入或更新数据库,具体取决于作为intent中的附加内容发送给它的内容。要测试此活动,我首先需要设置数据库以避免重复键和其他与数据库相关的问题。
问题,设置数据库,我需要一个上下文,我知道如何获取上下文的唯一方法是调用getActivity()但是它会在为活动设置之前读取数据库。
那么,使用ActivityInstrumentationTestCase2的子类,是否可以在初始化活动之前设置数据库?
我想做的一个psedudo-exampel。
public void testActivityWithDatabaseEmpty(){
//Setup database
SQLLiteDatabase myDb = getDatabase(); // how to do this in a test without first calling the activity?
emptyTestTable(myDb);
//Setup intent
Intent intent = getIntentWithNonExistingKey();
setActivityIntent(intent);
//Get activity
MyActivity activity = getActivity();
Button button = activity.findById(R.id.button);
assertAreEquals("", button.getText);
}
提前致谢 罗兰
答案 0 :(得分:1)
我不知道您在设置中需要做什么,但一种方法可能是将Application用作上下文。我亲自走了一条路,在我的测试中,我使用了一个特殊的数据库名称,不确定这是否适用于您的情况。我已在此blog post
中对其进行了描述