Teste Unitários e Teste de Integração - Dúvidas

Ola pessoal,

Ultimamente veio me dedicando bastante a tarefa de fazer teste unitário juntamente com o desenvolvimento. Porém surgiu uma dúvida com relação a diferença de teste unitário e teste de integração.

1 - Ambos, testes unitários e te integração, são testados com o JUnit?

2 - O teste unitário testa apenas 1 método, se ele faz chamada a outras classes, essas classes devem ser simuladas através de um Mock. No caso do Teste de Integraçao, voce deixa os Mocks de lado e de fato testa todas as classes envolvidas. Estou certo? Se sim, eu devo primeiro criar os Testes Unitários para depois implementar os testes de integração?

3 - Teste Unitário não interage com recursos externos (como banco de dados), no caso de teste de integração eu devo interagir? ou apenas nos testes funcionais?

4 - no TDD, o teste unitário é feito antes de implementar a classe. E sobre o teste de integração, deve ser feito depois da classe ser implementada e antes do teste funcional?

Alguém tem alguma dica a mais sobre os testes de integração?

obrigado desde já

1 - Ambos, testes unitários e te integração, são testados com o JUnit?
Sim, o teste de integração nada mais eh do q vc está integrando partes do seu sistema ao local aonde a versao “final” da aplicacao está rodando. Vc faz os seus testes unitarios para testar unidades do seu sw…dps vc os integra com o restante do sw…após a integracao dos novos arquivos, ai vc executa o teste de integracao, q nada mais eh do q rodar novamente todo o seu conjunto de testes para ver se está tudo em ordem.

2 - O teste unitário testa apenas 1 método, se ele faz chamada a outras classes, essas classes devem ser simuladas através de um Mock. No caso do Teste de Integraçao, voce deixa os Mocks de lado e de fato testa todas as classes envolvidas. Estou certo? Se sim, eu devo primeiro criar os Testes Unitários para depois implementar os testes de integração?
Teste de integração eh simplesmente executar os seus testes apos integrar o seu sistema.

3 - Teste Unitário não interage com recursos externos (como banco de dados), no caso de teste de integração eu devo interagir? ou apenas nos testes funcionais?

vc pode sim criar testes unitarios para testar recursos externos, desde q vc consiga “simular” um retorno boolean

4 - no TDD, o teste unitário é feito antes de implementar a classe. E sobre o teste de integração, deve ser feito depois da classe ser implementada e antes do teste funcional?

vc está confundindo o q eh testes de integracao…

olhe este link:
http://improveit.com.br/xp/praticas/integracao
e este:
http://improveit.com.br/xp/praticas/tdd

Pardal, você que está confundindo “teste” de Integração (de mudanças no código) com Teste de Integração (dos módulos do sistema).

No primeiro caso se integra as mudanças feitas por todos os desenvolvedores rodando todos os testes, sejam eles quais forem.

Já o segundo um tipo de teste onde você exercita várias partes do sistema funcionando em conjunto (ex.: codigo+bd), sem tentar isolá-los (ex.:mocks).

Ah! Fitnesse é uma ferramenta que pode ser usada pra fazer Testes de Integração. Não precisa ser tudo no jUnit.

Para mim são as mesmas coisas, a menos q alguem me dê uma resposta mais convincente…

vc separou, mas no fundo eh a msm coisa…em ambos os casos vc deve executar todos os seus testes…vai me dizer q no seu segundo caso vc nao executa todos os seus casos de teste?? se nao, como vc testa?

Teste de Integração significa integrar todos os artefatos do sw q vc tem em mãos juntamente com a versão que está em produção…ou seja, vc vai lançar uma nova versão…e para isso vc executa todos os casos de testes…

flw

Você está descrevendo Integração como em Integração Contínua.

Teste de Integração é exercitar as dependências do seu sistema.

Por exemplo, você está escrevendo um sistema que acessa um banco de dados e testa todas as suas classes usando mocks,

Você pode integrar todo o código, rodar todos os testes e ainda assim não terá testado a integração com o banco de dados. Ou seja, neste caso não existem testes de integração.

Sacou a diferença?

uhum…

:smiley:

vlw

Deem uma olhada no framework JBehave

Nem só de junit se vive :slight_smile: