SQLite Datanbank Testen mit AndroidTestCase

  • 0 Antworten
  • Neuester Beitrag
Diskutiere SQLite Datanbank Testen mit AndroidTestCase im Android App Entwicklung im Bereich Betriebssysteme & Apps.
X

Xatan

Neues Mitglied
Hi ich möchte wie schon der Titel sagt meine Datenbank testen. Ich hatte sie mal mit einem GUI Rumpf, paar buttons getestet alles funktioniert. Nun wollte ich es über testfälle mit JUnit machen.

Meine Testklasse, sie befindet sich in test/packge.name.test.datamanagement
Der Ordner test/ befindet sich auf der selben ebene wie src/ also nicht darin!
Im Manifest habe ich auch bereits die nötigen Zeilen schon hinzugefügt.
Code:
public class SettingsDAOTest extends AndroidTestCase {
  
    private SettingsDAO settingsDAO;
    private SQLiteDatabase database;

    @Override
    protected void setUp() throws Exception {
        super.setUp();
        settingsDAO = new SettingsDAO(mContext);
        DatabaseHelper dbHelper = new DatabaseHelper(mContext);
        database = dbHelper.getWritableDatabase();
//        database.delete(DatabaseHelper.TABLE_SETTINGS, null, null);
    }
  
    @Override
    protected void tearDown() throws Exception {
        database.close();
        super.tearDown();
    }
  
  
    @Test
    public void testSetLanguage() {
        SettingsDAO settingsDAO = new SettingsDAO(mContext);
        settingsDAO.setLanguage("Deutsch");
        String str = settingsDAO.getLanguage();
        Assert.assertEquals("Deutsch", str);
      
    }
}
Ich versuche die Sprache von English zu Deutsch zu setzen aber es wird nichts geändert. Könnte mir einer erklären warum? Die testklasse nimmt auch immer die Selbe Instanz von der Datenbank also sie wird nicht jedesmal neu aufgesetzt.

SettingsDAO ist meine Klasse um die Tabelle Settings zu verwalten. Ich speichere nur eine Zeile ein Settings Objekt. Daher nur der moveFirst() um in der ersten Zeile zu operieren.

Code:
public class SettingsDAO {
    public static final String TAG = "SettingsDAO";
    private SQLiteDatabase database;
    private Context context;
    private Settings settigns;
 
    private String[] SETTINGS_COLUMNS = {
            DatabaseHelper.SETTINGS_ID,
            DatabaseHelper.SETTINGS_LANGUAGE,
            DatabaseHelper.SETTINGS_FONT,
            DatabaseHelper.SETTINGS_FONTSIZE,
            DatabaseHelper.SETTINGS_BACKGROUND};
 
    /**
    * @param context the reference to the activity
    */
    public SettingsDAO(Context context) {
        this.context = context;     
        //checking if settings table is empty
        open();
        Cursor cursor = database.query(DatabaseHelper.TABLE_SETTINGS, this.SETTINGS_COLUMNS,
                null, null, null, null, null);
        if(cursor == null) {
            this.init();
            Log.d("Constructor: " , " inited ");
        }
        Log.d("Constructor: " , " not inited ");
        close();
     
    }
 
    /**
    * method to get settings
    * @return the settings
    */
    public Settings getSettings (){
        open();
     
        Cursor cursor = database.query(DatabaseHelper.TABLE_SETTINGS, this.SETTINGS_COLUMNS,
                null, null, null, null, null);
//        Cursor cursor = database.query(DatabaseHelper.TABLE_SETTINGS, new String[] { "*" },
//                null,
//                null, null, null, null, null);
        cursor.moveToFirst();

        settigns = new Settings (Integer.parseInt(cursor.getString(0)),
                                            cursor.getString(1),
                                            cursor.getString(2),
                                            Integer.parseInt(cursor.getString(3)),
                                            cursor.getString(4));
        cursor.close();
        close();
        return settigns;
    }
    /**
    * Updates a settings
    *
    * @param oldSettings the old settings
    * @param newSettings the edited Settings
    * @return true if successful
    */ 
    public boolean editSettings(Settings settings){
        ContentValues values = new ContentValues();
       values.put(DatabaseHelper.SETTINGS_LANGUAGE, settings.getLanguage());
       values.put(DatabaseHelper.SETTINGS_FONT, settings.getFont());
       values.put(DatabaseHelper.SETTINGS_FONTSIZE, settings.getFontsize());
       values.put(DatabaseHelper.SETTINGS_BACKGROUND, settings.getBackground());
       open();
     
       database.update(DatabaseHelper.TABLE_SETTINGS, values, DatabaseHelper.SETTINGS_ID + "= ?",
              new String[] { String.valueOf(1) });
       close();
       return true;
    }
    /**
    * Loads language
    *
    * @return the language
    */ 
    public String getLanguage () {
        open();
        Cursor cursor = database.query(DatabaseHelper.TABLE_SETTINGS, new String[] { "*" },
                null,
                null, null, null, null, null);
        if (cursor != null){
            cursor.moveToFirst();
        }
        String str = cursor.getString(1);
        cursor.close();
        close();
        return str;
    }
    /**
    * Saves language
    *
    * @param vlaue the language
    * @return true if successful
    */ 
    public boolean setLanguage(String value){
        ContentValues values = new ContentValues();
        values.put(DatabaseHelper.SETTINGS_LANGUAGE, value);
        open();
        database.update(DatabaseHelper.TABLE_SETTINGS, values, DatabaseHelper.SETTINGS_ID + "= ?",
              new String[] { String.valueOf(1) });
        close();
        return true;
    }
    /**
    * Loads font
    *
    * @return the font
    */ 
    public String getFont(){
        open();
        Cursor cursor = database.query(DatabaseHelper.TABLE_SETTINGS, new String[] { "*" },
                null,
                null, null, null, null, null);
        if (cursor != null){
            cursor.moveToFirst();
        }
        String str = cursor.getString(2);
        cursor.close();
        close();
        return str;
    }
    /**
    * Saves the font
    *
    * @param value the font
    * @return true if successful
    */ 
    public boolean setFont (String value){
        ContentValues values = new ContentValues();
        values.put(DatabaseHelper.SETTINGS_FONT, value);
        open();
        database.update(DatabaseHelper.TABLE_SETTINGS, values, DatabaseHelper.SETTINGS_ID + "= ?",
              new String[] { String.valueOf(1) });
        close();
        return true;
    }
    /**
    * Loads the font size
    *
    * @return the font size
    */ 
    public String getFontsize(){
        open();
        Cursor cursor = database.query(DatabaseHelper.TABLE_SETTINGS, new String[] { "*" },
                null,
                null, null, null, null, null);
        if (cursor != null){
            cursor.moveToFirst();
        }
        String str = cursor.getString(3);
        cursor.close();
        close();
        return str;
    }
    /**
    * Saves the font size
    *
    * @param value the font size
    * @return true if successful
    */ 
    public boolean setFontsize(String value){
        ContentValues values = new ContentValues();
        values.put(DatabaseHelper.SETTINGS_FONTSIZE, value);
        open();
        database.update(DatabaseHelper.TABLE_SETTINGS, values, DatabaseHelper.SETTINGS_ID + "= ?",
              new String[] { String.valueOf(1) });
        close();
        return true;
    }
    /**
    * Loads background
    *
    * @return the background
    */ 
    public String getBackground(){
        open();
        Cursor cursor = database.query(DatabaseHelper.TABLE_SETTINGS, new String[] { "*" },
                null,
                null, null, null, null, null);
        if (cursor != null){
            cursor.moveToFirst();
        }
        String str = cursor.getString(3);
        cursor.close();
        close();
        return str;
    }
    /**
    * Saves the background
    *
    * @param value the background
    * @return true if successful
    */ 
    public boolean setBackground(String value){
        ContentValues values = new ContentValues();
        open();
        values.put(DatabaseHelper.SETTINGS_BACKGROUND, value);
        database.update(DatabaseHelper.TABLE_SETTINGS, values, DatabaseHelper.SETTINGS_ID + "= ?",
              new String[] { String.valueOf(1) });
        close();
        return true;
    }
    /**
    * Opens a database that will be used for reading or writing.
    * If there a new one will be created with onCreat() in DatabaseHelper
    */
    public void open() throws SQLException {
        database = new DatabaseHelper(this.context).getWritableDatabase();
    }
    /**
    * Closes any open database.
    */
    public void close() {
        new DatabaseHelper(this.context).close();
    }
 
    /**
    * Used to set initial settings
    */
    public void init () {
        ContentValues values = new ContentValues();
     
       values.put(DatabaseHelper.SETTINGS_LANGUAGE, "English");
       values.put(DatabaseHelper.SETTINGS_FONT, "Arial");
       values.put(DatabaseHelper.SETTINGS_FONTSIZE, "2");
       values.put(DatabaseHelper.SETTINGS_BACKGROUND, "Black");

       open();
       database.insert(DatabaseHelper.TABLE_SETTINGS, null, values);
       close();
    }

}
DatabaseHelper erbt von SQLiteDatabaseHelper und erstellt einfach die Datenbank.
Was mache ich hier falsch? Wie kriege ich es hin dass immer eine neue Datenbank angelegt wird, welche ich dann mit verschiedenen Tests abändern und mit Asserts den Inhalt überprüfen kann.
 
Zuletzt bearbeitet:
Ähnliche Themen - SQLite Datanbank Testen mit AndroidTestCase Antworten Datum
2
2
0