Pourquoi les singletons sont-ils difficiles à tester ?

Table des matières:

Pourquoi les singletons sont-ils difficiles à tester ?
Pourquoi les singletons sont-ils difficiles à tester ?

Vidéo: Pourquoi les singletons sont-ils difficiles à tester ?

Vidéo: Pourquoi les singletons sont-ils difficiles à tester ?
Vidéo: ❌ Singleton Pattern Unity : pourquoi c'est dangereux ? 2024, Novembre
Anonim

La raison pour laquelle il est difficile de tester une classe singleton est que vous ne pouvez plus initialiser la classe pour chaque test, car elle ne peut être initialisée qu'une seule fois (et donc vous donne beaucoup de travail pour définir correctement toutes les valeurs pour chaque test).

Pourquoi est-il difficile de tester singleton ?

Il est difficile de tester du code qui utilise des singletons.

Vous ne pouvez pas contrôler la création de l'objet singleton car il est souvent créé dans un initialiseur statique ou une méthode statique. Par conséquent, vous ne pouvez pas non plus simuler le comportement de cette instance Singleton.

Quel est le problème avec les singletons ?

Les singletons entravent les tests unitaires: un singleton peut causer des problèmes pour écrire du code testable si l'objet et les méthodes qui lui sont associées sont si étroitement couplés qu'il devient impossible de tester sans écrire une classe entièrement fonctionnelle dédiée au Singleton.

Quels sont les inconvénients du singleton dans les tests unitaires ?

Pour exécuter du code contenant des singletons dans un harnais de test, nous devons assouplir la propriété singleton. Voici comment nous procédons. La première étape consiste à ajouter une nouvelle méthode statique à la classe singleton. La méthode nous permet de remplacer l'instance statique dans le singleton.

Pourquoi le singleton interfère-t-il avec les tests unitaires ?

Dans les tests unitaires, chacun des tests unitaires doit être indépendant l'un de l'autre. Une autre raison pour laquelle le modèle de conception Singleton vous rend la vie difficile dans les tests unitaires est parce qu'ils restent en mémoire jusqu'à ce que l'application soit active Par conséquent, ils persistent dans l'état tant que l'application reste dans le mémoire.

Conseillé: