围绕DB Access组织Android代码

时间:2011-07-18 05:05:45

标签: android database unit-testing

我的应用程序代码组织的一些背景故事:

现在我正在使用ad-hoc ORM进行数据库访问,其中每个表都被分成一个模型(只是一个不是从任何Android组件继承的普通Java类),它涵盖了正常的CRUD活动。 我没有使用内容提供商,因为所有这些数据都是应用程序专用的。

我保留了我的databaseopenhelper的单例,以及我的应用程序的Application类中的应用程序上下文

class MyApplication extends Application {
  private static Context mContext;

  @Override
  public void onCreate() {
    super.onCreate();
    mContext = this;
    dbHelper = new DatabaseHelper(this); // Subclass of SQLiteOpenHelper
  }

  public static Context getContext(){
    return mContext;
  } 

触及数据库的所有活动都会在onResume上打开数据库,并在暂停时关闭它。

在我开始进行单元测试之前,这似乎工作得很好,当我遇到使用单例的第一个问题时 - 打破封装(特别是不能使用RenamingDelegatingContext来测试特定的测试数据库)。

所以,

1)有些东西告诉我,如果我不能正确地进行单元测试,我的架构很糟糕 - 但是我想不出更好的方法(没有明确地传递上下文和dbhelpers - 这是一种痛苦)< / p>

2)如果这不是一个完全疯狂的想法,那么对这种设置进行单元测试的最佳方法是什么?

0 个答案:

没有答案