Maison > développement back-end > C++ > Comment tester efficacement le code en fonction de « DateTime.Now » ?

Comment tester efficacement le code en fonction de « DateTime.Now » ?

Patricia Arquette
Libérer: 2025-01-12 06:36:42
original
303 Les gens l'ont consulté

How to Effectively Unit Test Code Dependent on `DateTime.Now`?

Isolation des dépendances temporelles dans les tests unitaires

Tester le code dépendant de DateTime.Now présente un défi unique. Tester directement l’horloge système introduit une instabilité et rend les tests moins fiables. Voici deux approches efficaces pour gérer cette dépendance :

Approche 1 : Injection de dépendances

La méthode préférée consiste à faire abstraction de la dépendance temporelle. Créez une interface (par exemple, ITimeProvider) définissant une méthode pour obtenir l'heure actuelle. Implémentez cette interface avec une classe concrète (par exemple, SystemTimeProvider) qui utilise DateTime.Now. Injectez cette interface dans vos cours qui ont besoin de l'heure actuelle.

Lors des tests unitaires, vous pouvez injecter une simulation ITimeProvider qui renvoie une valeur DateTime prédéterminée. Cela vous donne un contrôle total sur le temps utilisé dans vos tests sans affecter l'horloge système.

Approche 2 : Contexte ambiant (avec prudence)

Une autre option consiste à utiliser un contexte statique. Créez une classe de base (par exemple, TimeProvider) avec une propriété statique Current contenant le fournisseur de temps actif. Une implémentation par défaut (par exemple, SystemTimeProvider) peut être définie initialement.

Pour les tests, remplacez la propriété statique Current pour utiliser un fournisseur fictif. Surtout, n'oubliez pas de réinitialiser la propriété Current à sa valeur par défaut après chaque test pour éviter un comportement inattendu lors des tests suivants. Cette approche nécessite un nettoyage méticuleux pour éviter les interférences des tests.

Résumé

Les deux méthodes permettent une isolation efficace des dépendances temporelles dans vos tests unitaires. Cependant, l'injection de dépendances est généralement préférée en raison de sa conception plus propre et de son risque réduit d'effets secondaires involontaires par rapport à l'utilisation d'un contexte ambiant statique.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal