Minhas aulas estão seguindo essa estrutura
- Camada de serviço (cria e mapeia InputDTO para dados de banco de dados)
- Camada DAO (na verdade, executa chamadas de banco de dados)
Quando escrevo testes JUnit da camada de serviço, a camada DAO é chamada e isso espera uma conexão com o banco de dados real e a obtenção de dados do banco de dados.
Devo estar zombando completamente da camada DAO da camada de serviço ou zombando da conexão e dos dados recebidos do banco de dados?
Em segundo lugar, o aplicativo espera determinados dados de um cache.
Para o tempo de execução do JUnit, não há cache; então, como isso deve ser tratado? O método da camada de serviço inclui procurar no cache para obter os detalhes.
fonte
No resumo, a resposta é bastante simples.
Você tem três camadas.
[O caso de teste] -> [O comportamento em teste] -> [Os colaboradores usados por esse comportamento]
A terceira camada é o que deve ser ridicularizado. Por exemplo:
PokemonCaptureServiceTest
;PokemonCaptureService
;Pokeball
Neste exemplo, verifica-se que
Pokeball
é lógica de terceiros. Ele exige que todos os tipos de encanamento como conexões de banco de dados e arquivos de propriedade etc. Você confia no seu terceiro testou-lo adequadamente, para que gostaria de omiti-lo do seu teste dePokemonCaptureService
. Por isso, deve ser ridicularizado.No entanto, em outro momento e local, o colaborador
Pokeball
é uma classe simples que introduz muito pouca complexidade no caso de teste e pode ser incluída no teste facilmente. Nesse caso, você pode optar por incluir uma instância realPokeball
naPokemonCaptureService
instância que está sendo testada.Não existe uma regra rígida e rápida. Cabe a você projetar seus testes da maneira que lhe parecer melhor. Seu objetivo é criar testes corretos e de manutenção o mais rápido possível. A experiência é fundamental aqui. Faça mais testes e em breve você terá uma boa intuição.
fonte
É difícil dizer exatamente o que você deseja testar porque, a julgar pela pergunta, você está em todo lugar. Portanto, é difícil dar um exemplo prático de como proceder, além de levá-lo a artigos sobre como zombar de coisas. Então, você precisa ser mais específico e dividir as coisas um pouco:
Deseja testar para que o cache funcione corretamente?
Deseja testar alguma chamada de banco de dados em particular?
Deseja testar o aplicativo para que ele esteja usando o cache corretamente?
Depois de decidir exatamente qual é a unidade que você deseja testar, a seleção do que deve ser ridicularizado torna-se fácil: em um teste de unidade puro, tudo , exceto a "unidade em teste", deve ser ridicularizada. A lógica por trás disso é que você pode ter certeza, com base nas suas expectativas de configuração nos trocadilhos, de que a unidade testada funciona como deveria.
Fora isso, você pode escrever alguns testes no JUnit que são testes de integração, ou seja, usam menos zombarias. Mesmo que sejam usados como verificações de sanidade para ver se o design do software está correto, você deve estar ciente de que eles serão quebradiços e nem sempre fornecerão um indicador sobre o que exatamente está errado com seu aplicativo ou sistema.
fonte