Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Ausência do assert no verify

Pq não preciso colocar nenhum assert quando termino o meu método de teste com o dao.verify? Qual a relação entre o mock e o nunit? Sei que o verify retorna boolean mas o nunit cata isso automaticamente? Não precisa do assert?

insira seu código aqui
1 resposta
solução!

Oi Diogo, tudo bem?

Pq não preciso colocar nenhum assert quando termino o meu método de teste com o dao.verify?

Depende. O método Verify() de um mock serve para verificar que um método foi chamado pelo objeto testado. Mas nada impede que você adicione outras verificações com Assert no mesmo teste.

Qual a relação entre o mock e o nunit?

O conceito de Mock não é exclusivo do NUnit. Ele existe em vários frameworks de teste.

Imagine um motor de carro. Você quer testar o funcionamento do motor apenas (teste unitário). Então você não precisa do carro inteiro para isso. O que você faz? Você faz um mock para simular cada um dos outros componentes do carro:

  • Transmissão
  • Câmbio
  • Sistema de arrefecimento (radiador)
  • Sistema elétrico
  • Tanque de gasolina
  • Rodas
  • Pedais
  • etc.

Então você precisa que os mocks se comportem de determinadas maneiras para testar o comportamento do motor. Por exemplo: o que acontece quando o pedal do acelerador (mock) é acionado? Você espera que o motor aumente as rotações por minuto de A para B. E quando o motor já estiver na rotação máxima definida pela fábrica? O motor não poderá aumentar as rotações, pois isso pode destruir o mecanismo do motor e provocar um acidente na estrada. Tudo isso é testado não com pedais de verdade, mas com esses "mocks" que os técnicos plugam na bancada de testes.

Sei que o verify retorna boolean mas o nunit cata isso automaticamente? Não precisa do assert?

Podemos pensar no seguinte:

  • Verify vai testar se um método/propriedade do mock foi acessado (pelo objeto em testes)
  • Assert vai testar algum valor do objeto em testes

Ambos têm funções diferentes e podem ser usados sozinhos, ou em conjunto, num mesmo teste.