Puoi eseguire test black box o white box a qualsiasi livello di astrazione. Considera la seguente funzione:
double getDistance(double side1, double side2) {
return pythagorean(side1, side2);
}
Un test della scatola nera dovrebbe controllare se hai la risposta giusta. Ad esempio, un test del riquadro bianco verrebbe verificato che pythagorean()
sia stato chiamato, piuttosto che lawOfSines()
,
Il prossimo livello di astrazione su potrebbe avere una funzione come:
boolean inRange(double x, double y) {
return getDistance(x, y) <= getMaximumRange();
}
Un test del riquadro nero a questo livello dovrebbe verificare che certi valori siano precalcolati all'interno o all'esterno dell'intervallo. Un test del riquadro bianco controllerebbe anche che getDistance()
e getMaximumRange()
siano stati chiamati con i valori corretti durante il calcolo. Questo rende getDistance()
un dettaglio casella bianca in questo livello, anche se si trattava di un dettaglio di una scatola nera in un livello inferiore.
Nella stragrande maggioranza dei casi, i test unitari non dovrebbero preoccuparsi affatto dell'implementazione. cioè dovresti fare i test black box. Spesso i test dell'unità white box sono inevitabili, ma dovrebbero essere ridotti al minimo, quindi l'accoppiamento dei test alla tua implementazione è ridotto al minimo.