Prueba de Android JUnit para SQLiteOpenHelper

Soy nuevo en junit testing.

¿Puede alguien ayudarme, cómo probar mi clase SQLiteOpenHelper .

Significa qué clases tengo que implementar y cómo probar mi base de datos y tablas. Estoy utilizando Eclipse IDE.

Desde el nivel 24 de API, RenamingDelegatingContext está obsoleto. Otro hilo sugiere utilizar Robolectric 's RuntimeEnvironment.application como se describe en este artículo Medium .

Respuesta antigua para referencia:

Para un DatabaseHandler simple:

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

He creado un 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 wich is not connected to the standard database of the App } } 

Usted puede escribir la prueba de la base de datos del androide en el estilo de JUnit4 también. Sólo tiene que agregar la siguiente dependencia en su base de datos

 androidTestCompile('com.android.support.test:runner:0.3'){ exclude group: 'com.android.support', module: 'support-annotations' } 

Y marque la clase Prueba de la siguiente manera

 @RunWith(AndroidJUnit4.class) public class DatabaseTest { @Test public void myFirstTest(){ //your test } } 

RenamingDelegatingContext ahora está obsoleto en v24. Utilice Robolectric para probar. Un ejemplo (en Kotlin) como abajo

 @RunWith(RobolectricGradleTestRunner::class) @Config(constants = BuildConfig::class, sdk = intArrayOf(LOLLIPOP), packageName = "com.elyeproj.simpledb") class ExampleUnitTest { lateinit var dbHelper: DbHelper // This is your SQLOpenHelper class @Before fun setup() { dbHelper = DbHelper(RuntimeEnvironment.application) // Your new context from Robolectric dbHelper.clearDbAndRecreate() // A function just to clear and recreate DB } @Test @Throws(Exception::class) fun testDbInsertion() { // Given val testStr1 = "testing" val testStr2 = "testing" // When dbHelper.insertText(testStr1) dbHelper.insertText(testStr2) // Then assertEquals(dbHelper.getAllText(), "$testStr1-$testStr2-") } @After fun tearDown() { dbHelper.clearDb() // A function just to clear the DB } } 

Puede obtener toda la fuente del proyecto desde https://github.com/elye/demo_simpledb_test

Puede obtener la elaboración de https://medium.com/@elye.project/android-sqlite-database-unit-testing-is-easy-a09994701162#.s44tity8x

Esta pregunta es muy abstracta. Le recomiendo que lea la Guía de pruebas de Android. Tiene algunos ejemplos sencillos de probar las aplicaciones de Android.

Biblioteca de soporte para pruebas de Android

Entrenamiento de pruebas de Android

Sin saber su código, supongo que su SQLiteOpenHelper es utilizado por una actividad o servicio. Creo que este Actividades / Servicios es que debe probar.

Un buen comienzo debe ser ActivityInstrumentationTestCase2 para una actividad o ServiceTestCase para un servicio.

Espero que ayude.

  • En Android, compruebe si la base de datos sqlite existe falla de vez en cuando
  • Cómo agregar más de una columna cuando se utiliza el método setCursor del constructor de alertdialog para mostrar una lista de elementos de una base de datos?
  • Cómo extender la clase BaseDaoImpl de ORMLite en Android para ampliar la funcionalidad
  • ¿DÓNDE IN cláusula en Android sqlite?
  • ¿Por qué se ha borrado la base de datos SQLite al borrar los datos de la aplicación de Application Management?
  • Consulta de actualización de Android SQlite
  • cláusula multiple where en android
  • Depurando ExpandableListView de la base de datos - no funciona
  • ¿Cómo descargar una base de datos SQLite desde un dispositivo Android?
  • Unión externa izquierda con cláusula Select en Android
  • Eliminar las primeras filas en la base de datos android sqlite
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.