在编写测试时初始化Activity之前设置数据库

时间:2012-02-03 19:48:02

标签: android database testing installation

我需要为一个活动编写测试,该活动可以插入或更新数据库,具体取决于作为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);
}

提前致谢 罗兰

1 个答案:

答案 0 :(得分:1)

我不知道您在设置中需要做什么,但一种方法可能是将Application用作上下文。我亲自走了一条路,在我的测试中,我使用了一个特殊的数据库名称,不确定这是否适用于您的情况。我已在此blog post

中对其进行了描述