user1753461
user1753461

Reputation: 45

How to test methods that deal with SQLite database in android?

I have made an application that deals with SQLite database by opening, retrieving data from, and inserting data to it. Now I want to test my methods.

So , I have two classes, one "SQLiteHelper" which extends SQLiteOpenHelper to open,create,and upgrade the database, and the other is a DataSource class, that makes an SQLiteDatabase object,and contains all my methods that deals with the database.

So for calling any method I need to call the open method in the SQLiteHelper class, catch the result in an SQLiteDatabse object,then make an object of the DataSource class,and finally call the method( which contains a cursor as a result of a rawquery for example).

I know that it won't work with simple JUnit test, and I've read about Mock Objects, but I still don't understand how I can use it in my case.

Upvotes: 2

Views: 7466

Answers (1)

olshevski
olshevski

Reputation: 5010

I know that it won't work with simple JUnit test

It will. Just call your methods as usual and check results for correctness.

The only important thing is that you should prefer to use IsolatedContext for your database creation. In this case your original database file from the app will remain unmodified. All tests will work with separate testing database file which can be modified or even deleted as many times as you want.

You can acquire proper IsolatedContext from ProviderTestCase2. (You can also look ProviderTestCase2 sources to understand how it works.)

Upvotes: 4

Related Questions