2016-03-20 49 views
6

Sto usando Sugar ORM per db e Robolectric per il test dell'unità. Per utilizzare Sugar ORM con Robolectric, ho seguito la domanda this.Sugar ORM ha bisogno di record da salvare ogni volta che si esegue il test dell'unità?

dove ho messo il mio codice qui sotto per startEverTestSugarAppAsFirst metodo ed eseguire.

new PersonHandler(new Activity()).insertPeople(); 
Person p = Person.findById(Person.class, 1); 
System.out.println(p.getName()); 

Stampa il nome del primo record. Fin qui tutto bene.

Ma se commento fuori //new PersonHandler(new Activity()).insertPeople(); ed eseguo di nuovo, non viene restituito alcun record e viene fornita l'eccezione del puntatore nullo. Ho pensato che Sugar ORM memorizzasse i record alla prima esecuzione da qualche parte e posso accedere a questi record una seconda volta.

D'altra parte, se corro l'emulatore in cui ho messo il codice qui sotto nel metodo di mia attività principale onCreate e nel secondo run con commentando la prima linea riesco a vedere il primo record stampato nel registro.

new PersonHandler(this).insertPeople(); 
Person p = Person.findById(Person.class, 1); 
Log.v("person", p.getName()); 

Quindi, Sugar ORM elimina db dopo il test dell'unità? o dove salva il db così posso usarlo ancora e ancora?

risposta

1

Non è SugarORM ma Robolectric. Crea un database temporaneo ogni test, quindi non c'è alcuna dipendenza nascosta tra di loro.

Questa è una buona cosa, il test di unità dovrebbe essere eseguito con successo non dipende da ordine in cui vengono eseguiti

+0

posso usare SQLite db con db = SQLiteDatabase.openOrCreateDatabase (filePath, null); comando nel test unità robolectic. C'è un modo per connettere lo zucchero con un percorso db specificato? – orkan

+0

http://stackoverflow.com/questions/24225541/android-sugar-orm-with-existing-db-custom-file-path –

+0

Conosco questo post. Ma le risposte riguardano la copia della cartella locale db in/data/data/... in cui l'emulatore può accedervi. Devo usare il db locale per il test dell'unità. Perché, ho già db at/data/data/... location. Ma il codice zucchero nel test unitario non guarda in questa posizione e lo usa. – orkan