Vamos lá…
Independente de qualquer metodologia de desenvolvimento(TDD, BDD, etc…) o objetivo dos testes unitario é grarantir que determinada funcionalidade do seu sistema esta realmente funcionando. Como você citou, ninguem coloca metodos que não funcionem, porem como vc garante que em “n” situações o resultado será o esperado. Para grandes empresas, testes unitarios são obrigatorios, ele geram grande parte das evidencias de teste.
Não necessariamente você precisa testar metodo a metodo, e sim funcionalidades.
Seu testes deve funcionar independentemente de recursos externos, por exemplo, Banco de Dados ou qualuqe operação I/O.
Você pode garantir isso com Mocks que simulam essas informações, entaum existem algumas regras para implementar isso.
No caso de testar um metodo void como vc citou, msm ele sendo void ele executou alguma tarefa sendo assim vc pode verificar se o que ele executou resultou no esperado.
Qlq duvida poste ai…
Abraço…