Android De Base De Données SQLite Tests Unitaires
Je suis nouveau sur android app développement et la je viens de faire une note d'application. Je veux faire des tests unitaires pour le insertNote, readNote et updateNote méthodes pour la base de données. Comment puis-je aller à ce sujet? Voici le code de ma base de données.
Merci.
public class DatabaseManager extends SQLiteOpenHelper {
public static final String Database_Name = "Notes Database";
public static final String Table_Name = "notes";
public static final String Column_id = "textId";
public static final String Column_title = "textTitle";
public static final String Column_body = "textBody";
public DatabaseManager(Context context){
super(context, Database_Name, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db){
db.execSQL("CREATE TABLE " + Table_Name + " (" + Column_id +
" INTEGER PRIMARY KEY AUTOINCREMENT, " + Column_title +
" TEXT, " + Column_body + " TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
db.execSQL("DROP TABLE IF EXISTS" + Table_Name);
onCreate(db);
}
public void insertNote(Note note){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(Column_title, note.getTextTitle());
values.put(Column_body, note.getTextBody());
boolean result = db.insert(Table_Name, null, values) > 0;
if (result == true)
Log.d("Create", "Data Has Been Saved");
db.close();
}
public Cursor readNote(int id){
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM " + Table_Name + " WHERE _ROWID_ = " + id, null);
if (cursor != null){
cursor.moveToFirst();
}
Note myNote = new Note();
myNote.textId = cursor.getInt(cursor.getColumnIndex(Column_id));
myNote.textTitle = cursor.getString(cursor.getColumnIndex(Column_title));
return cursor;
}
public ArrayList<String> getNoteList(){
ArrayList<String> noteList = new ArrayList<>();
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM " + Table_Name, null);
cursor.moveToFirst();
if (cursor.moveToFirst()){
do{
//noteList.add(cursor.getInt(cursor.getColumnIndex(Column_id)));
noteList.add(cursor.getString(cursor.getColumnIndex(Column_title)));
}
while (cursor.moveToNext());
}
return noteList;
}
public int updateNote(Note note){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("textTitle", note.getTextTitle());
values.put("textBody", note.getTextBody());
int update = db.update(Table_Name, values, Column_id + " = ?", new String[]{Integer.toString(note.getTextId())});
return update;
}
public Integer deleteNote(int id){
SQLiteDatabase db = this.getWritableDatabase();
return db.delete(Table_Name, Column_id + " = ?", new String[]{Integer.toString(id)} );
}
public int getCount(){
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM " + Table_Name, null);
cursor.close();
return cursor.getCount();
}
}
OriginalL'auteur Anderson | 2015-12-14
Vous devez vous connecter pour publier un commentaire.
Une façon de mettre en œuvre SQLite tests avec un instrumentation de test unitaire, à l'aide de la InstrumentationRegistry dans l'Android package de test pour obtenir un Contexte.
Voici un exemple à partir d'un tutoriel et un exemple sur GitHub:
OriginalL'auteur Cabezas
Essayer de trouver des tutoriels, des articles sur les tests unitaires de la base de données SQLite en Java. Les Tests unitaires en Java et Android est certainement la même chose.
Bien que vous trouverez ces sujets, sur la Pile:
Comment tester Android sqlite avec junit?
Comment tester des méthodes qui traitent de la base de données SQLite sous android?
ou cet article:
Android Facile SQLite Avec Des Tests Unitaires
Selon les tests SQLite databese avec Junit, vérifiez ceci:
Android de test JUnit pour SQLiteOpenHelper
où vous pourriez trouver cette solution:
Lire aussi:
En utilisant Junit pour tester l'écriture et de la lecture pour SQLite
Les tests de SQLiteOpenHelper sous-classe avec JUnit
OriginalL'auteur piotrek1543
Cette réponse suggère la Roboelectric bibliothèque. Ce qui a fonctionné pour moi. Il est plus rapide que d'un test instrumenté, qui doit fonctionner dans un émulateur.
OriginalL'auteur dfrankow