У меня есть это приложение с базой данных на его бэкэнде, и у меня много проблем, когда я думаю о том, как это проверить. (Это приложение для Android, но я думаю, что концепции тестирования похожи. В тестируемом приложении у меня есть адаптер базы данных:
public class MyDatabaseAdapter() {
Cursor returnCursorFromQuery(SQLQuery query) {
// execute an SQL query and wrap the result in a Cursor object
}
}
У меня есть метод, и я пытаюсь проверить, дает ли он правильный вывод, когда запрос SELECT моей базы данных не возвращает строк:
MyDatabaseAdapter adapter;
public int methodUnderTest() {
this.adapter = new MyDatabaseAdapter();
return populate();
}
private int populate() {
SQLQuery query = new SQLQuery("SELECT * FROM my_table");
Cursor aCursor = this.adapter.returnCursorFromQuery(query);
// populate the UI
return aCursor.getCount();
}
У меня есть объект фиктивного курсора, который возвращает ноль строк по всем запросам в моей тестовой среде, но я не понимаю, как заставить мой приватный метод populate()
выполнять его запрос к объекту фиктивного курсора, а не к курсору подключен к моей фактической базе данных. Или, если я пишу фиктивный объект адаптера базы данных, как заставить methodUnderTest()
использовать фиктивный адаптер вместо того, который запрограммирован для использования?
Любое направление будет очень полезным. Спасибо.