Autore Topic: Mock database  (Letto 596 volte)

Offline Teo

  • Utente junior
  • **
  • Post: 98
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Acer Liquid E / Xoom2
  • Sistema operativo:
    Mac OS X 10.8
Mock database
« il: 22 Ottobre 2011, 00:05:52 CEST »
0
Non sapevo in che sezione metterlo, così mi sembrava che questa era la più adatta..
Comunque, sto facendo il testing al progetto, quindi sto facendo il progetto di test del mio progetto; è la prima volta che scrivo questo tpo di progetto e quindi sono un pò spiazzato...

Qualcuno saprebbe spiegarmi come si fa il mock del database?? e come fare ad inizializzare il db mockato
Grazi grazie  ;-)

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Mock database
« Risposta #1 il: 22 Ottobre 2011, 11:27:17 CEST »
0
Non è una cosa semplice da spiegare in due righe, sarebbe utile che ci spiegassi come hai realizzato la parte della tua applicazione che accede al database.

Offline Teo

  • Utente junior
  • **
  • Post: 98
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Acer Liquid E / Xoom2
  • Sistema operativo:
    Mac OS X 10.8
Re:Mock database
« Risposta #2 il: 22 Ottobre 2011, 11:56:42 CEST »
0
ho creato un db attraverso un ORM, e uso le librerie ORMlite per farlo..
in pratica ho una classe, dove gli attributi della classe diventano le colonne del db, e ogni istanza dell'oggetto diventano le tuple del db.. però penso che non cvambi nulla questo visto che estendo comunque un db helper che sarebbe: OrmLiteSqliteOpenHelper. Poi per accedere al db,uso le query normalmente.

Spero di essere stato chiaro, ma ne dubito  :-P

Comunque io ho provato a fare così:
Codice (Java): [Seleziona]
interventoDao = EasyMock.createMock(InterventoDaoORM.class);
è che quando faccio l'assert nel test, mi da questo errore e non capisco cosa significhi:
java.lang.ExceptionInInitializerError
at org.easymock.internal.MocksControl.createProxyFactory(MocksControl.java:139)
at org.easymock.internal.MocksControl.createMock(MocksControl.java:59)
at org.easymock.EasyMock.createMock(EasyMock.java:104)
at it.cpmapave.verbale.ascensori.test.DatiTest.setUp(DatiTest.java:83)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:525)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1547)
Caused by: java.lang.NoClassDefFoundError: org.easymock.internal.ClassProxyFactory$1
at org.easymock.internal.ClassProxyFactory.<clinit>(ClassProxyFactory.java:144)
... 13 more

che sarebbe la stessa cosa che mi dice il logcat

Offline Teo

  • Utente junior
  • **
  • Post: 98
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Acer Liquid E / Xoom2
  • Sistema operativo:
    Mac OS X 10.8
Re:Mock database
« Risposta #3 il: 22 Ottobre 2011, 12:19:37 CEST »
0
Mettiamo che non abbia usato l'ORM, ma che abbia fatto un db normale, la riga di codice che ho postato è corretta??
E non è che magari prima di quella riga, devo fare qualche altro comando, per mockarlo?

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Mock database
« Risposta #4 il: 22 Ottobre 2011, 12:28:11 CEST »
0
A dirti la verità non conosco quella libreria, nei miei test mi sono sempre creato delle classi mock a mano.

Offline Teo

  • Utente junior
  • **
  • Post: 98
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Acer Liquid E / Xoom2
  • Sistema operativo:
    Mac OS X 10.8
Re:Mock database
« Risposta #5 il: 22 Ottobre 2011, 14:11:47 CEST »
0
Potresti spiegarmi un pò come si fanno?? Se puoi, vuoi, non è che posteresti un piccolo esempio per piacere ?

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Mock database
« Risposta #6 il: 22 Ottobre 2011, 14:22:52 CEST »
+1
Dovresti estrarre l'interfaccia dalla tua classe InterventiDaoOrm (se già non ce l'hai) e realizzare una classe che implementa quell'interfaccia ma invece di salvare i dati su db li salva ad esempio in un ArrayList o dove ti è più congeniale ;)

Offline Teo

  • Utente junior
  • **
  • Post: 98
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Acer Liquid E / Xoom2
  • Sistema operativo:
    Mac OS X 10.8
Re:Mock database
« Risposta #7 il: 22 Ottobre 2011, 14:28:08 CEST »
0
ah ok.. ho capito.. allora ci smanetto un attimo  :D e vede se funziona, per il momento grazie mille!!!!

Offline TheTodd

  • Utente junior
  • **
  • Post: 58
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    samsung gs2
  • Play Store ID:
    sdmdev
  • Sistema operativo:
    window xp
Re:Mock database
« Risposta #8 il: 02 Aprile 2013, 17:44:38 CEST »
0
Dovresti estrarre l'interfaccia dalla tua classe InterventiDaoOrm (se già non ce l'hai) e realizzare una classe che implementa quell'interfaccia ma invece di salvare i dati su db li salva ad esempio in un ArrayList o dove ti è più congeniale ;)

lo fai manualmente oppure via eclipse? ho visto che si può fare con tasto dx sul progetto->refactoring->extractInterface ma non lo fa per i metodi privati e protected ... Perché? E se volessi farlo? Grazie