outros.Para ver mais sobre JUnit, acesse: http://www.devmedia.com.br/introducao-ao-desenvolvimento-guiado-por-teste-tdd-com-junit/26559.A vantagem e que tanto a sincronizacao com o repositorio de controle de versao como para o uso do framework de teste, e possivel utilizar plug-ins diretamente nas ferramentas IDE s como Eclipse, Netbeans etc, facilitando o trabalho do desenvolvedor.Com a utilizacao de teste e o controle de versao centralizado, e necessaria para uma boa integracao, a automatizacao dos builds. O processo de build (compilar, preparar o executavel, rodar os testes automatizados, etc.) e a sua automatizacao e algo relativamente comum, de forma que possamos evitar problemas. Ao realizar os builds, existem diversas ferramentas que permitem a automatizacao dos builds, entre elas temos o ant (para java), Maven, Nant (para dot net), MSBuild (para dot net), entre outros. Nao automatizar os builds, segundo Fowler, e um erro, pois diversos problemas ocorrem quando o processo e feito de forma manual, pois cada desenvolvedor acaba realizando o build de forma diferente, podendo criar problemas na integracao.Um outro ponto importante, segundo Fowler, e que os builds devem ser auto testaveis, ou seja, durante os builds e necessario ter tambem os testes automatizados, como mencionados acima, para melhorar no processo de deteccao de erros.Bem, e a Integracao?Agora que temos um controle de versao centralizado, temos testes automatizados, temos builds automatizados, podemos ter a integracao, que e antes de tudo uma comunicacao, e para isso tudo deve estar pronto e adequado.O unico pre-requisito para um desenvolvedor lancar suas alteracoes na versao principal e que ele consiga executar perfeitamente o codigo. Isso, claro, inclui passar pelos testes da build. Como com qualquer ciclo de lancamento de codigo, o desenvolvedor primeiro atualiza sua copia de trabalho para coincidir com a versao principal, resolve qualquer conflito e entao gera o build em sua maquina local. Se o build passar, entao ele estara liberado para lancar suas alteracoes na versao principal. Fowler.A integracao continua permite que os desenvolvedores encontrem rapidamente conflitos de versao, o grande segredo e solucionar problemas rapidamente e continuamente.Ferramentas para Integracao continuaCom os recursos acima ja implementados, chega o momento de implementar uma ferramenta de integracao continua. Existem diversas ferramentas, entre elas o Hudson, Jenkins etc. Sao ferramentas livres e estao disponiveis para download gratuitamente.A chave para uma boa integracao, como visto anteriormente, e um ambiente de controle de versao centralizado, builds e testes automatizados.As ferramentas de integracao continua permite que seja configurado o seu sistema, o ambiente de desenvolvimento (exemplo: jdk), permite que seja configurado o sistema de build automatizado como o ant, integrar com o repositorio de controle de versao, e permite ainda o envio de e-mails de notificacao. Isto e importante, pois como o sistema e automatizado, caso ocorram erros, o desenvolvedor pode ser notificado que a integracao gerou falhas, para poder ser analisada.A implantacao das ferramentas sao simples, por exemplo, o Jenkins pode ser baixado gratuitamente em http://jenkins-ci.org/, existindo versoes para Windows, Linux, Mac, Solaris, BSD, Unix, etc. A instalacao e simples, e pode ser vista em https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+as+a+Windows+service.ConclusaoA integracao continua com ferramentas automatizadas traz diversos beneficios, como vimos. Primeiro e que o trabalho em equipe gera menos erros,