A razão pela qual é difícil testar uma classe singleton é que você não pode inicializar a classe para cada teste novamente, porque ela pode ser inicializada apenas uma vez (e, portanto, dá muito trabalho para definir todos os valores corretamente para cada teste).
Por que é difícil testar singleton?
É difícil testar código que usa singletons.
Você não pode controlar a criação do objeto singleton porque muitas vezes ele é criado em um inicializador estático ou método estático. Como resultado, você também não pode simular o comportamento dessa instância Singleton.
Qual é o problema com singletons?
Singletons dificultam o teste de unidade: Um Singleton pode causar problemas para escrever código testável se o objeto e os métodos associados a ele estiverem tão fortemente acoplados que se torne impossível testar sem escrever uma classe totalmente funcional dedicada ao Singleton.
Quais são as desvantagens do singleton em testes unitários?
Para executar um código contendo singletons em um equipamento de teste, temos que relaxar a propriedade singleton. Aqui está como fazemos isso. O primeiro passo é adicionar um novo método estático à classe singleton. O método nos permite substituir a instância estática no singleton.
Por que o singleton interfere no teste de unidade?
No teste de unidade, cada um dos testes de unidade deve ser independente um do outro. Outra razão pela qual o padrão de projeto Singleton torna sua vida difícil em testes de unidade é porque eles permanecem na memória até que o aplicativo esteja ativo Portanto, eles persistem no estado enquanto o aplicativo permanecer no memória.