galera, trabalho em um sistema que preciso dar uma bela passada de -test infect-, mas tenho uma dúvida:
Testes que devem manipular arquivos (IO), sockets, dados (banco), é recomendável fazer com mocks e deixar -pra valer- apenas na hora da integração? Vocês rodam seus testes em todos os ambientes que o sistema vai rodar? (linux, windows) ? Como fazer isso de maneira ágil?
Isso mesmo, para que sua suite de testes rode de forma agil, em tempo desenvolvimento, eh aconselhado a utilizacao de mocks. Em relacao aos SO’s testados, isso vai muito do criterio de aceite definido.
Eu já acho que tem de haver mais pragmatismo na decisão de onde criar mocks. Aqui vão algumas perguntas para você:
Você precisa isolar um recurso compartilhado pelos desenvolvedores?
Se você tem um único DB de desenvolvimento, ou um web service remoto, ou alguma outra forma de recurso ou servidor compartilhado em que dois testes rodando simultaneamente iriam influenciar o resultado um do outro, você definitivamente precisa de mocks.
Qual é o custo de criar o mock?
Fazer o mock da sua persistência provavelmente será mais complicado do que usar uma ferramenta como o supracitado DBUnit ou scripts SQL para inicializar seu BD. Será que o potencial ganho de velocidade de execução vale a pena?
O quão fiel é o mock?
Eu já vi problemas sérios causados devido a diferenças entre o mock e o componente real, especialmente quando o mock era tratado como documentação e não como ferramenta.