In generale, direi che il codice del kernel non è testato sull'unità (sono sicuro che ci sono alcune eccezioni). Ci sono alcune cose che rendono il codice del kernel difficile da testare unitamente
- Il codice del kernel generalmente si interfaccia con l'hardware.
- Il codice del kernel non si collega alla libreria c standard, utilizza intestazioni specifiche del kernel ecc.
Potresti disaccoppiare tutte le tue funzioni che non si interfacciano con l'API o l'hardware del kernel, ma non è stata la mia esperienza su ciò che accade realmente.
Penso che la maggior parte del codice del kernel venga testata usando "test di integrazione" in cui le app della riga di comando vengono scritte per esercitare l'interfaccia userspace al codice del kernel.
Infine, il codice C stesso può essere testato unitamente. Scrivo codice C quasi ogni giorno e viene sottoposto a test dell'unità.