4

I'd like to test the methods inside the databasehelper class. I develop with Android studio. I use Mockito for testing and I got error message running the test:

Method getReadableDatabase in android.database.sqlite.SQLiteOpenHelper not mocked.

This is my DatabaseHelper class:

public class DatabaseHelper2 extends SQLiteOpenHelper {

    //The Android's default system path of your application database.
    private static String DB_PATH = "/data/data/com.example.b.mywm/databases/";

    private static String DB_NAME = "429";

    private SQLiteDatabase myDataBase;

    private final Context myContext;

    /**
     * Constructor
     */
    public DatabaseHelper2(Context context) {
        super(context, DB_NAME, null, 1);
        this.myContext = context;
    }

    public void openDataBase() throws SQLException {
        //Open the database
        String myPath = DB_PATH + DB_NAME;
        myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }

    @Override
    public synchronized void close() {
        if(myDataBase != null) {
            myDataBase.close();
        }

        super.close();
    }
    public List<Topic> getTopics() {
        SQLiteDatabase db = this.getReadableDatabase();

        ArrayList<Topic> topics = new ArrayList<Topic>();

        int id = -1;
        String description = "";

        Cursor c = db.rawQuery("SELECT * FROM" + "Topics", null);

        if (c.moveToFirst()) {
            id = c.getInt(c.getColumnIndex("ID"));
            description = c.getString(c.getColumnIndex("Description"));

            Topic t = new Topic(id, description);
            topics.add(t);
        }
        c.close();

        //  Contact contact = new Contact(Integer.parseInt(cursor.getString(0)),
        //        cursor.getString(1), cursor.getString(2));
        // return contact
        return topics;
    }
}

My test:

@RunWith(MockitoJUnitRunner.class)
public class DBTest {

    @Mock
    Context mMockContext;

    @Mock
    DatabaseHelper2 dataBaseHelper;

    @Before
    public void setUp() {
        dataBaseHelper = new DatabaseHelper2(mMockContext);
    }

    @Test
    public void readStringFromContext_LocalizedString() {
       List<Topic> f = dataBaseHelper.getTopics();
    }
}
Mateusz Korwel
  • 1,118
  • 1
  • 8
  • 14
Ferenc
  • 41
  • 4

0 Answers0