Michael Feathers in questo articolo propone il concetto di Vise ("morsa"), con l'aggiunta di una libreria di supporto. Supponendo di dover modificare un bel metodo legacy senza capire bene come funzioni, mettere un Vise vuol dire "pinzare" il valore di variabili significative nel flusso di esecuzione, per controllare che la loro elaborazione non venga cambiata dall'intervento.
Il Vise.jar che Feathers fornisce è semplice ma ben pensato: inserendo la "morsa" nel codice e attivandola nei setUp dei TestCase, alla prima esecuzione dei test si registrano i valori, mentre alle successive si verifica che non vengano cambiati. Di fatto non ci si pone neanche il problema di capire "quanto" debba valere una variabile in un certo punto del codice.
Ecco il solito esempio banale:
Nella classe Multiplier mettiamo una pinza al risultato calcolato con il comando Vise.grip(...)
E possiamo così scrivere il testCase:
Supponendo di non sapere fare 2x2, se dopo una prima esecuzione cambiassimo la formula di moltiplicazione in 2+2 avremmo Vise che ci annuncia l'eccezione.
P.S. Per chi non lo sapesse Feathers è l'autore di questo libercolo. Se siete curiosi questo è l'articolo da cui è poi nato il libro