Vou dar dois exemplos:
Uma vez trivial, uma vez vi uma classe de rede que permitia definir o host e a porta e depois enviar mensagens. Teste de unidade funcionou - você poderia definir o host, você poderia definir a porta, você poderia chamar o método que enviou mensagens.
Na integração, alguém escreveu o código do cliente que usou essa classe e definiu a porta antes de definir o host. Nada funcionou, porque o método host set redefiniu a porta para um padrão.
Esse é um exemplo simples e simples que mostra que seus testes de unidade podem mostrar um comportamento correto, mas como os métodos não foram chamados da maneira esperada, falharam no tempo de execução. Você poderia argumentar que os testes unitários não estavam corretos, pois eles não testaram todas as combinações das chamadas de configuração da propriedade, mas o teste unitário é garantir que cada seção do código funcione corretamente (por exemplo, define a propriedade correta) e não como a interação entre então ocorre. (Claro, seria melhor argumentar que a classe deveria ter sido a unidade de teste aqui e que poderia ter detectado esse bug, mas mesmo assim duvido que alguém tenha repetido o teste com uma combinação diferente de configuração de propriedade).
Outro exemplo é com threading. Eu tive uma classe que funcionou perfeitamente em testes de unidade, que tem um bloqueio em um recurso compartilhado e chama um método em um objeto diferente, que como esse método é ridicularizado, retorna imediatamente. No mundo real, esse método realmente faz muito mais trabalho, cria um novo thread que aguarda o mesmo recurso compartilhado se tornar disponível e, assim, compromete todo o programa. Boa sorte em encontrar isso em testes unitários.
Testes de unidade não são o teste principal que você deve fazer. De fato, se você tivesse que ter apenas 1 camada de teste, seria um teste de integração. Os testes de unidade são uma maneira "rápida e suja" de superar os erros óbvios gerados durante o desenvolvimento e são mais uma verificação de desenvolvedor para garantir que você não fez nada estúpido (como no tempo em que escrevi uma aula de aritmética o operador de subtração .. um teste de unidade teria pego aquele corte e cole preguiça). Isso é tudo o que eles devem estar lá para, no entanto, tentando garantir a operação perfeita do sistema usando-os é equivocada.