PDA

View Full Version : Test usando Mock


Ufo13
10-02-2008, 23:26
Due anni fa, quando abbiamo iniziato a lavorare a Diamonds, ho continuamente sottovalutato l'importanza dei Mock. Forse perche` non li ho capiti o forse perche` ero pigro...

Fatto sta che in questi giorni ho usato un bel po' di classi Mock per i miei test e mi sono finalmente reso conto che bisogna assolutamente sapersi costrutire le classi Mock (e mantenerle!) per raggiungere la massima efficienza di testing per numero righe di codice quando si tratta di codice ad alto livello.

Un esempio sono le varie Action che erano tutte testate ad alto livello. Come sapete ho iniziato a riscrivere le action completamente da zero usando TDD e creandomi un po' di Mock object per aiutarmi nel compito.

Sono riuscito a testare tutto isolatamente senza mai dover coinvolgere 200 istanze di classi di gioco.

Morale della favola: usiamo ste classi mock! Non avevamo manco un MockDroppable caspita! :|

Date un'occhiata al package it.diamonds.tests.grid.iterations

P.S. Perdonatemi se con questo topic e` morta la lingua italiana :|

Bonfo
11-02-2008, 01:22
Infatti adesso asfaltiamo i vari TestCase, perchè con i giusti mock non ce ne è bisogno ;)

EDIT:
propongo di "centrlizzare" i metodi di test createXXX(), ovvero tutto quele util che creano gem,chest e qualsiasi cosa.
Dovrebbe semplifacarci la vita nel testing.
Mi sembra che MockSingleDroppable sia perfetto.

EDIT2:
Mi sa che tra i refactoring ci va anche quello dei mock!!
Come li organizziamo e come evitaimo i duplicati??

Poi io farei un abella task list di "riscrittura" dei test visto i nuovi sviluppi.
1: organizzazione dei Mock
2: pulizia dei XXXTestCase
3: Ogni singolo TestCase vienen controllato e si pulisce utilizzando mock.

Un po' alla Refactor This! :D :D

fek
11-02-2008, 09:49
Ottimo lavoro! Peccato per la lingua italiana ma siamo abituati :)
Bonfo, quando lo reputate necessario potete aggiungere Refactor This ovunque nel codice.

thebol
11-02-2008, 10:14
EDIT:
propongo di "centrlizzare" i metodi di test createXXX(), ovvero tutto quele util che creano gem,chest e qualsiasi cosa.
Dovrebbe semplifacarci la vita nel testing.
Mi sembra che MockSingleDroppable sia perfetto.


non ho il codice sotto mano ma cerca sotto il package test.helper

Bonfo
11-02-2008, 18:11
Ottimo lavoro! Peccato per la lingua italiana ma siamo abituati :)
Bonfo, quando lo reputate necessario potete aggiungere Refactor This ovunque nel codice.

E' che queste cose non mi sembra molto "locali', ovvero un Refactor This mi sembra funzionare molto bene se c'e' del codice dove non si capisce niente, ma a livello di struttura delle classi non penso che aiuti. :rolleyes: