Perdemos muito tempo em nosso último teste de integração de um bug que acho que deveria ter sido encontrado em testes de unidade. O problema era que uma interface / serviço que chamamos se comportava diferente do esperado e o teste de unidade não encontrou esse problema porque zombamos dessa interface para o teste de unidade e, obviamente, nossa simulação se baseava em nossa interpretação equivocada do que seria a interface. Faz. Agora, eu podia ficar um pouco bravo com o nosso querido colega de trabalho que forneceu a interface, porque a descrição / especificação dela (um comentário conciso do JavaDoc) era ambígua e contribuiu para nosso mal-entendido. Por outro lado, pensei que o problema poderia ter sido evitado se esses mesmos colegas de trabalho tivessem fornecido uma implementação simulada de sua interface, a qual poderíamos chamar em nossos testes de unidade.
Agora, qual é a melhor prática para organizar a criação de objetos simulados entre equipes que fornecem e usam interfaces compartilhadas? Quais são suas experiências?