Android JUnit test for SQLiteOpenHelper
You can write android database test in JUnit4 style as well. You just need to add following dependency in your database
androidTestCompile('com.android.support.test:runner:0.3'){
exclude group: 'com.android.support', module: 'support-annotations'
}
And mark you Test class as follows
@RunWith(AndroidJUnit4.class)
public class DatabaseTest {
@Test
public void myFirstTest(){
//your test
}
}
As of API Level 24, RenamingDelegatingContext
is deprecated. Another thread suggests to use Robolectric's RuntimeEnvironment.application
as described in this Medium article.
The old answer for reference:
For a simple DatabaseHandler:
public class MyDatabase extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "database.db";
private static final int DATABASE_VERSION = 1;
public MyDatabase(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db){
// some code
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// some code
}
}
I created an AndroidTestCase:
public class DatabaseTest extends AndroidTestCase {
private MyDatabase db;
@Override
public void setUp() throws Exception {
super.setUp();
RenamingDelegatingContext context = new RenamingDelegatingContext(getContext(), "test_");
db = new MyDatabase(context);
}
@Override
public void tearDown() throws Exception {
db.close();
super.tearDown();
}
//According to Zainodis annotation only for legacy and not valid with gradle>1.1:
//@Test
public void testAddEntry(){
// Here I have my new database which is not connected to the standard database of the App
}
}