TDD-mönster: testning av icke-deterministisk algoritm
Det verkar på ytan knivigt att testa en icke-deterministisk algoritm.
Låt oss säga att vi har en algoritm som givet indata Input ska ge ett Result-objekt som svar, där Result-objektet beror på "något icke-deterministiskt".
Detta går att lösa genom "dependency injection" så här:
Plötsligt kan vi testa våran algoritm!
En nackdel med denna teknik är att testkoden blir ganska så "nära" algoritmens implementation, eftersom den i princip måste känna till exakt hur algoritmen kommer fram till sitt svar (i vilken ordning olika val görs i algoritmen beror ju på slumptaltsgeneratorn). Om det är någon som har en bra lösning på detta problem, ge mig tips :)
Låt oss säga att vi har en algoritm som givet indata Input ska ge ett Result-objekt som svar, där Result-objektet beror på "något icke-deterministiskt".
Detta går att lösa genom "dependency injection" så här:
- Skicka med slumptalsgeneratorn till algoritmen, säg Rnd()
- Använd Rnd() i den icke-deterministiska delen av algoritmen
Plötsligt kan vi testa våran algoritm!
En nackdel med denna teknik är att testkoden blir ganska så "nära" algoritmens implementation, eftersom den i princip måste känna till exakt hur algoritmen kommer fram till sitt svar (i vilken ordning olika val görs i algoritmen beror ju på slumptaltsgeneratorn). Om det är någon som har en bra lösning på detta problem, ge mig tips :)
Kommentarer
Postat av: johan t
dags att du ökar publiceringsfrekvensen på din blogg
Trackback