Android JUnit test for SQLiteOpenHelper

前端 未结 4 1233
挽巷
挽巷 2020-12-08 00:52

I am new to junit testing.

Can anyone help me , how to test my SQLiteOpenHelper class.

Means what classes I have to implement and how to test my

4条回答
  •  挽巷
    挽巷 (楼主)
    2020-12-08 01:32

    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
        }
    }
    

提交回复
热议问题