Eu notei que falar sobre o TDD dificilmente funciona. As pessoas gostam de ver resultados brutos . Dizer que "escrever testes irá reduzir o tempo de desenvolvimento" é provavelmente verdade, mas pode não ser suficiente para convencer ninguém.
Eu estava em posição similar (bem, não tão ruim quanto a sua), e meio que se resolveu quando as pessoas começaram a trabalhar no meu código (nota: meu código foi testado na unidade, outros nem tanto). Quando algo parou de funcionar, o acompanhamento natural após a investigação local foi perguntar a qual poderia ser a razão . Depois nos sentamos, fizemos testes de unidade e vimos o que aconteceu. Se os testes estivessem passando, a maioria dos problemas de tempo estava no novo código não testado. Se não, os testes geralmente são capazes de identificar o problema (ou pelo menos nos apontar na direção certa). Corrigimos o bug, os testes aumentaram, todo mundo ficou feliz.
Para encurtar a história, algumas situações como essa ocorreram e mais dois desenvolvedores se tornaram entusiastas do TDD / teste (ainda há mais alguns para serem lançados, mas parece promissor).
Como para o conselho, você pode dar um passo com o kata TDD; Tarefa simples para implementar usando uma primeira abordagem de teste em oposição a nenhum teste . Dependendo da complexidade da tarefa, a abordagem sem teste geralmente deve ser mais lenta, especialmente com alterações incrementais necessárias:
Editar : o comentário do OP me fez perceber que há um argumento ainda mais strong à sua disposição - regressão também conhecido como retorno de bugs . Esse tipo de situação é um exemplo perfeito demonstrando como os testes unitários podem ser benéficos. As pessoas gostam de números - como eu disse, dizendo que "o teste de unidade é bom" pode não ser convincente, mas organizar os dados abaixo pode certamente ser:
- tempo gasto para implementar o recurso (nenhum teste foi escrito; suponho que isso aconteceu com frequência, por isso deve ser relativamente fácil encontrar esse exemplo)
- tempo estimado para implementar o recurso com a abordagem TDD (ou mesmo testes após ; não importa - o que é importante é a presença de testes de unidade)
- tempo gasto resolvendo o bug no código testado e não testado
Uma coisa para avisá-lo (essa questão é óbvia, mas vale a pena notar): viés de resultado - certifique-se de não selecione o exemplo em que a única maneira de detectar bug com o teste foi escrever um teste para esse bug. Normalmente, ninguém sabe que o bug ocorrerá de antemão, mas é tentador dizer "cara, esse bug seria trivial se tivéssemos testado por X" - é fácil encontrar uma tática vencedora para uma guerra depois que ela terminou .
O resultado desses exemplos deve ser uma pergunta simples - se você pudesse gastar x-horas desenvolvendo o recurso Y, por que insistiria em fazê-lo em 2x ?