Ho eseguito il refactoring "Replace Method with Method Object" descritto da Beck.Come posso testare i metodi in un oggetto metodo?
Ora, ho una classe con un metodo "run()" e un gruppo di funzioni membro che scompongono il calcolo in unità più piccole. Come posso testare queste funzioni membro?
La mia prima idea è che i miei test unitari siano fondamentalmente copie del metodo "run()" (con diverse inizializzazioni), ma con asserzioni tra ogni chiamata alle funzioni membro per verificare lo stato del calcolo.
(sto usando Python e il modulo unittest.)
class Train:
def __init__(self, options, points):
self._options = options
self._points = points
# other initializations
def run(self):
self._setup_mappings_dict()
self._setup_train_and_estimation_sets()
if self._options.estimate_method == 'per_class':
self._setup_priors()
self._estimate_all_mappings()
self._save_mappings()
def _estimate_all_mappings():
# implementation, calls to methods in this class
#other method definitions
ho sicuramente aspettative su ciò che i gli stati degli attributi membri dovrebbero essere prima e dopo le chiamate verso i diversi metodi come parte di l'implementazione del metodo run()
. Devo fare affermazioni su questi attributi "privati"? Non so in che altro modo separare questi metodi.
L'altra opzione è che non dovrei davvero testarli.
Alcuni codici o pseudo-codici sarebbero utili per comprendere la tua domanda. Da quello che hai scritto, sembra che tu possa beneficiare del metodo unittest.TestCase.setUp(). http://docs.python.org/library/unittest.html#unittest.TestCase.setUp – msw
Ho modificato la tua domanda con il codice che hai fornito. Puoi controllare che il rientro sia corretto e modificarlo se necessario? –
@ire_and_curses. Grazie, modificato un po '. –