Come eseguire i test unitari su un metodo che tiene conto del tempo trascorso?

8

Attualmente sono nel mezzo di refactoring di un metodo importante in un sistema legacy. Ci sono stati quasi zero test fino a quando non ho iniziato a lavorarci, e ho aggiunto parecchio per garantire il corretto lavoro dopo i miei refactoring.

Ora mi sono imbattuto nella parte più cruciale: l'algoritmo che calcola un indicatore. È qualcosa di simile a

indicator = (OneNumberFromA + AnotherNumberFromB) / elapsedTime;

Come posso testare il comportamento corretto per questa funzione con i test delle unità?

Ci sono anche alcuni algoritmi leggermente diversi nelle funzioni, che il programma raggiunge in alcuni casi - ma in tutti loro, il elapsedTime è vitale per il risultato.

    
posta mrtnrdl 13.02.2013 - 09:53
fonte

2 risposte

11

Allo stesso modo in cui risolvi quasi ogni problema con i test unitari: prendi in giro il tempo trascorso.

Consiglio di utilizzare un metodo standardizzato per ottenere il tempo di sistema in tutto il sistema e quindi rendere questo metodo superabile, così i test delle unità hanno il controllo totale. I test conterranno quindi molte chiamate eleganti come Time.fake(timeA) o anche Time.stop() .

    
risposta data 13.02.2013 - 10:03
fonte
1

Misura del tempo & la valutazione dell'indicatore dovrebbe essere in diverse funzioni. Nel tuo caso, elapsedTime dovrebbe essere un input della funzione di valutazione. In questo modo, il tuo codice di valutazione può essere testato ed è più facile da capire.

Ora hai ancora il problema di testare la funzione di misurazione del tempo, ma questo va oltre lo scopo di questa domanda.

    
risposta data 13.02.2013 - 10:04
fonte

Leggi altre domande sui tag