Eu nunca gostava de testes de unidade. Eu sempre pensei que isso aumentava a quantidade de trabalho que eu tinha que fazer.
Acontece que isso é verdade apenas em termos do número real de linhas de código que você escreve e, além disso, isso é completamente compensado pelo aumento no número de linhas de código útil que você pode escrever em uma hora com testes e desenvolvimento orientado a testes.
Agora eu amo testes de unidade, pois eles me permitem escrever código útil, que muitas vezes funciona na primeira vez! (bata na madeira)
Descobri que as pessoas relutam em fazer testes de unidade ou iniciar um projeto com desenvolvimento orientado a testes, se estiverem sob prazos rígidos ou em um ambiente em que outros não o façam, e não o fazem. Meio que, uma recusa cultural de tentar.
Eu acho que uma das coisas mais poderosas sobre o teste de unidade é a confiança que isso lhe dá para realizar a refatoração. Ele também dá uma nova esperança encontrada: eu posso dar meu código a outra pessoa para refatorar / melhorar e, se meus testes de unidade ainda funcionarem, eu posso usar a nova versão da biblioteca que eles modificaram, praticamente sem medo.
É esse último aspecto do teste de unidade que acho que precisa de um novo nome. O teste de unidade é mais como um contrato do que esse código deve fazer agora e no futuro.
Quando ouço a palavra teste, penso em camundongos em gaiolas, com vários experimentos realizados para verificar a eficácia de um composto. Não é isso que é o teste de unidade, não estamos testando código diferente para ver qual é a abordagem mais afetiva, estamos definindo quais saídas esperamos com quais entradas. No exemplo dos ratos, os testes de unidade são mais parecidos com as definições de como o universo funcionará, em oposição às experiências realizadas nos ratos.
Estou no crack ou alguém vê essa recusa em fazer testes e eles acham que é uma razão semelhante pela qual não querem fazer isso?
Que razões você / outras pessoas dão para não testar?
O que você acha que as motivações deles não são os testes unitários?
E como um novo nome para o teste de unidade que pode superar algumas das objeções, que tal o jContract? (Um pouco centrada em Java, eu sei :), ou Contratos de Unidade?