Una definizione popolare di unit test è quella di ISTQB:
A unit test is the smallest testable part of an application like
functions, classes, procedures, interfaces. Unit testing is a method
by which individual units of source code are tested to determine if
they are fit for use.
Secondo questa definizione:
- se scrivi un programma di test per B, è un test unitario (di B).
- se scrivi un programma di test per C, è un test unitario (di C).
Ora può esserci una differenza tra l'intento e l'ambito del test. Se si scrive un programma di test per B usando C, è ancora un test unitario di C, perché tutto ciò che si può fare è fornire l'input a C e verificare in base all'output se B era corretto. È solo che deduci che B funziona perché C funziona.
Esiste anche una definizione di test di integrazione :
Testing performed to expose defects in the interfaces and in the
interactions between integrated components or systems.
La normale definizione di componenti software implica che sia indipendente e può essere implementato da solo. Qui, B e C sembrano non essere componenti indipendenti, quindi non abbiamo test di integrazione.