mocking

13
mocking Emanuele DelBono [email protected] http://blog.codiceplastico.com

Upload: emanuele-delbono

Post on 15-Jan-2015

1.414 views

Category:

Technology


3 download

DESCRIPTION

Presentation about mock objects

TRANSCRIPT

Page 1: Mocking

mocking

Emanuele DelBono [email protected]://blog.codiceplastico.com

Page 2: Mocking

Agenda

Page 3: Mocking

Perchè?

Se uno unit test è rosso l’errore è sicuramente nell’unità sotto test

Page 4: Mocking

Definizioni

• State Based Testing: verifica che un unità funzioni correttamente verificandone lo stato dopo l’esecuzione

• Interaction Testing: verifica che l’unità sotto test effettui correttamente le chiamate verso gli altri oggetti con cui collabora

Page 5: Mocking

Cosa sono?• Sono finti oggetti che ci aiutano in vari modi a

testare le nostre unità.

• Si chiamano simpaticamente:

Dummy, Fake, Stub, Spy, Mock=

Test Doubles

Page 6: Mocking

Utili perchè?

• Ci permettono di:– rimanere focalizzati sul metodo che stiamo

disegnando– scrivere unit test anche su oggetti che collaborano

con altri– scrivere test di interazione tra diversi oggetti– posticipare l’implementazione di alcuni

collaboratori

Page 7: Mocking

Esempio

(WheatherStatistics)

Page 8: Mocking

Ma hai presente quanto codice hai scritto?

• Ci sono alcuni framework che aiutano:– RhinoMocks– Moq– TypeMock– Nmock– Nmock2– .NET Mock

Page 9: Mocking

Ri-Esempio

(WheatherStatistics)

Page 10: Mocking

Le 3 fasi dell’apprendimento

1. WTF !? **%*!!2. I got the power! Posso mockare il mondo!3. Lo zen e l’arte del Mockare quanto basta

Page 11: Mocking

Alcune (buone) regole

• Non verificare i dettagli della collaborazione• Se puoi usa uno stub invece di un mock• Non mockare grosse interfacce• Mocka solo i tuoi diretti collaboratori• Usa un solo mock per il test• Non mockare i dati di ritorno

Page 12: Mocking

E i test di integrazione?

I mock object permettono di scrivere test unitari, ma...

...anche i test di integrazione sono importanti.

Page 13: Mocking

Grazie

• Riferimenti:– Growing object oriented software – Freeman,

Pryce – Addison Wesley– http://xunitpatterns.com/– http://www.mockobjects.com/