Índice:

Você pode testar métodos estáticos de unidade?
Você pode testar métodos estáticos de unidade?

Vídeo: Você pode testar métodos estáticos de unidade?

Vídeo: Você pode testar métodos estáticos de unidade?
Vídeo: Níveis e Técnicas de Teste, Entenda! unidade, integração, sistema, regressão, funcional, estrutural 2024, Dezembro
Anonim

Para teste de unidade você preciso pegar um pequeno pedaço de sua código, religue suas dependências e teste isoladamente. Isso é difícil com métodos estáticos , não apenas no caso de acessar o estado global, mas até mesmo E se eles apenas chamam outro métodos estáticos.

Considerando isso, como você testa métodos estáticos?

Existem quatro etapas fáceis na configuração de um teste que simula uma chamada estática:

  1. Use o executor PowerMock JUnit: @RunWith (PowerMockRunner.
  2. Declare a classe de teste da qual estamos zombando:
  3. Diga ao PowerMock o nome da classe que contém métodos estáticos:
  4. Configure as expectativas, dizendo ao PowerMock para esperar uma chamada para um método estático:

Da mesma forma, podemos simular métodos estáticos C #? 4 respostas. Moq (e outros baseados em DynamicProxy zombeteiro frameworks) são incapazes de zombar qualquer coisa que não seja virtual ou abstrata método . Alternativamente, você poderia refatorar seu projeto para abstrair chamadas para métodos estáticos , e fornecer essa abstração para sua classe por meio de injeção de dependência.

Com relação a isso, como você faz o teste de unidade de métodos privados?

Teste de unidade apenas a API disponível publicamente. Ao escrever testes de unidade , imitam o comportamento dos clientes do SUT. Não testar métodos privados . Qualquer teste de unidade indiretamente, usando a API pública, ou extraí-los em classes separadas e teste essas classes em vez disso.

O que é um método estático?

Em Java, um método estático é um método que pertence a uma classe em vez de uma instância de uma classe. o método é acessível a todas as instâncias de uma classe, mas métodos definidos em uma instância só podem ser acessados por aquele membro de uma classe.

Recomendado: