Quando ocorrem grandes alterações de código (novo conjunto de POJOs, refatoração de aplicativos importantes etc.), os testes de unidade tendem a ser comentados em vez de retrabalhados.
Eu sempre tento manter a refatoração e a mudança de funcionalidade separadas. Quando preciso fazer as duas coisas, costumo confirmar a refatoração primeiro.
Ao refatorar o código sem alterar a funcionalidade, os testes de unidade existentes devem ajudar a garantir que a refatoração não interrompa acidentalmente a funcionalidade. Portanto, para tal confirmação, consideraria desabilitar ou remover os testes de unidade como um grande sinal de aviso. Qualquer desenvolvedor que faça isso deve ser instruído a não fazer isso quando o código estiver sendo revisado.
É possível que alterações que não alteram a funcionalidade ainda causem falhas nos testes de unidade devido a testes de unidade defeituosos. Se você entende o código que está mudando, a causa dessas falhas no teste de unidade geralmente é imediatamente óbvia e fácil de corrigir.
Por exemplo, se uma função usa três argumentos, um teste de unidade que cobre a interação entre os dois primeiros argumentos para a função pode não ter tido o cuidado de fornecer um valor válido para o terceiro argumento. Essa falha no teste de unidade pode ser exposta por uma refatoração do código testado, mas é fácil de corrigir se você entender o que o código deve fazer e o que o teste de unidade está testando.
Ao alterar a funcionalidade existente, geralmente será necessário também alterar alguns testes de unidade. Nesse caso, os testes de unidade ajudam a garantir que seu código altere a funcionalidade conforme pretendido e não tenha efeitos colaterais indesejados.
Ao corrigir erros ou adicionar novas funcionalidades, geralmente é necessário adicionar mais testes de unidade. Para aqueles, pode ser útil confirmar os testes de unidade primeiro e confirmar a correção de bug ou a nova funcionalidade posteriormente. Isso facilita a verificação de que os novos testes de unidade não foram aprovados no código mais antigo, mas foram aprovados no código mais recente. Essa abordagem não é totalmente sem inconvenientes, portanto, também existem argumentos a favor da confirmação de novos testes de unidade e atualizações de código simultaneamente.
O tempo é melhor gasto em testes de integração que abrangem casos de uso, o que torna os testes de menor escopo menos / nem um pouco importantes.
Há algum elemento de verdade nisso. Se você puder obter cobertura das camadas inferiores da pilha de software com testes direcionados para as camadas superiores da pilha de software, seus testes poderão ser mais úteis ao refatorar o código.
Eu não acho que você encontrará um acordo sobre a distinção exata entre um teste de unidade e um teste de integração. E não me preocuparia se você tivesse um caso de teste que um desenvolvedor chamasse de teste de unidade e outro chamasse de teste de integração, desde que concordem que é um caso de teste útil.