Em geral, eu diria que o código do kernel não é testado em unidade (tenho certeza que existem algumas exceções). Existem algumas coisas que tornam o código do kernel difícil de testar na unidade
- O código do kernel geralmente faz interface com o hardware.
- O código do kernel não está vinculado à biblioteca padrão c, ele usa cabeçalhos específicos do kernel, etc.
Você poderia desacoplar todas as suas funções que não fazem interface com a API ou o hardware do kernel, mas essa não foi a minha experiência do que realmente acontece.
Acho que a maioria dos códigos do kernel é testada usando "testes de integração", em que os aplicativos de linha de comando são escritos para exercitar a interface do espaço de usuário no código do kernel.
Finalmente, o próprio código C pode ser testado em unidade. Eu escrevo o código C quase todo dia e ele é testado na unidade.