Ao ter uma integração contínua executando os testes em cada confirmação, uma prática recomendada comum é fazer com que todos os testes passem o tempo todo (também conhecido como "não quebre a compilação").
Encontro alguns problemas com isso:
Por exemplo, não se pode ajudar um projeto de código aberto criando testes correspondentes a tickets. Sei que se eu propuser uma solicitação de recebimento a um projeto de código aberto que contenha teste de falha, a compilação será marcada como falha e o projeto não desejará que ela seja mesclada em seu repositório porque "interromperá a compilação".
E não acredito que seja ruim ter testes reprovados em seu repositório , é como ter problemas em aberto no seu rastreador. Essas são apenas coisas que estão esperando para serem consertadas.
O mesmo vale para uma empresa. Se você trabalha com TDD, não pode escrever testes, confirmar e depois escrever o código lógico que realiza o teste. Isso significa que, se eu escrevi de 4 a 5 testes no meu laptop, não posso executá-los antes de sair de férias. Ninguém pode retomar o meu trabalho. Eu não posso nem "compartilhá-los" com um colega, exceto enviando-os por e-mail, por exemplo. Também impede trabalhar com uma pessoa escrevendo os testes e a outra escrevendo o modelo.
Tudo isso para dizer, estou usando mal / entendendo mal o processo de compilação / integração contínua? Parece-me que "passar" / "não passar" é um indicador muito restrito.
Existe uma maneira de tornar a integração contínua e compatível com TDD?
Talvez exista uma solução / prática padrão para distinguir "novos testes" (que podem falhar) e "testes de regressão" (que não devem falhar porque costumavam trabalhar)?