dupa
09-12-2008, 13:12
Ciao a tutti.
Ipotizziamo di aver una classe A che dobbiamo testare, questa classe ordina insiemi di elementi...
L'approccio che uso per i test è preparare insiemi di elementi, chiamare il metodo della classe A che sto testando e verificare se quello che mi restituisce è effettivamente l'ordinamento corretto che mi aspetto.
Nel caso in cui il funzionamento di A fosse meno banale.. e richiedesse l'utilizzo di una classe B, allora ci sono due strade:
- creare un oggetto di B "reale" e agganciarlo a A..
- usare un mock object di B e agganciarlo a A..
Se uso un mock object per B, con easymock devo anche dichiarare nel test che funzioni verranno chiamate e che valori dovranno restituire..
questo mi dovrebbe consentire di verificare il comportamento di A isolato ma, così facendo non vado a scrivere/imporre nel test anche della logica implementativa di A?
Se un domani facessi un refactoring e, dentro A, al posto di usare B, iniziassi a usare C, i miei test fallirebbero perchè i mock non avrebbero il comportamento che ho definito nel test..
idee?
grazie
Ipotizziamo di aver una classe A che dobbiamo testare, questa classe ordina insiemi di elementi...
L'approccio che uso per i test è preparare insiemi di elementi, chiamare il metodo della classe A che sto testando e verificare se quello che mi restituisce è effettivamente l'ordinamento corretto che mi aspetto.
Nel caso in cui il funzionamento di A fosse meno banale.. e richiedesse l'utilizzo di una classe B, allora ci sono due strade:
- creare un oggetto di B "reale" e agganciarlo a A..
- usare un mock object di B e agganciarlo a A..
Se uso un mock object per B, con easymock devo anche dichiarare nel test che funzioni verranno chiamate e che valori dovranno restituire..
questo mi dovrebbe consentire di verificare il comportamento di A isolato ma, così facendo non vado a scrivere/imporre nel test anche della logica implementativa di A?
Se un domani facessi un refactoring e, dentro A, al posto di usare B, iniziassi a usare C, i miei test fallirebbero perchè i mock non avrebbero il comportamento che ho definito nel test..
idee?
grazie