我正在尝试为我的数据库编写测试用例。
我有一个扩展到SQLiteOpenHelper的辅助类
DBHelper.java
public DBHelper(Context context) {
super(context, DBConstants.DATABASE_NAME, null, DBConstants.DATABASE_VERSION);
}
和一个包含所有插入删除等的构造函数类。
DBController.java
public DBController open() throws SQLException {
dbHelper = DBHelper.getInstance(context);
database = dbHelper.getWritableDatabase();
return this;
}
我的考试班
DBControllerTest.java
@Mock
Context mContext;
DBController dbController;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
RenamingDelegatingContext context = new RenamingDelegatingContext(mContext, "test_");
dbController = new DBController(context);
dbController.open();
}
这时,当我执行dbController.open()时,dbHelper.getWritableDatabase()始终返回null。
我如何解决这个问题。我也是以正确的方式嘲笑它。我搜索了很多但没有找到解决方案。测试数据库查询的最佳方法是什么。
答案 0 :(得分:4)
你不能这样模仿Context
,你需要使用仪器Context
。由于此测试需要Android代码并因此需要检测,因此请确保将其放在androidTest
目录中的测试中。
请参阅this答案。