Est-il un moyen de ScheduledExecutorService.scheduleAtFixedRate de test unitaire sans utiliser Thread.sleep?

voix
0

Je voudrais test unitaire une classe qui exécute une tâche à l'aide ScheduledExecutorService.scheduleAtFixedRate, et je ne peux pas trouver un moyen de « planifier » plusieurs pistes de la tâche dans un test unitaire sans utiliser Thread.sleep, qui est lent et non précise que je voudrais. Est-il possible de passer une référence de temps raillé au service de l'exécuteur ou d'autres solutions de contournement pour simuler le passage du temps?

Créé 02/12/2019 à 23:59
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

Tests unitaires vérifier le comportement de votre code dans l' isolement de ses dépendances.

Les mises en œuvre de ScheduledExecutorServicesont fournis par la machine virtuelle Java et donc pas votre code, mais une dépendance qui doit être remplacé par un double test en UnitTesting votre code. (Il pourrait y avoir une configuration valide pour un test qui a besoin de la ScheduledExecutorServicemise en œuvre à exécuter, mais ce n'est pas un test unitaire alors.)

Ainsi , dans le cas où vous écrivez un test unitaire (et non pas un autre type de test à savoir les tests d'intégration , qui se produit à l' aide de la framwork JUnit ) vous devez créer une maquette de l' ScheduledExecutorServiceinterface à l' aide d' un cadre moqueur (comme Mockito ou similaire) et vérifiez que votre code appelle la méthode souhaitée sur la maquette.

Pour activer votre test pour cette vérification que vous devez injecter la mise en œuvre de l' ScheduledExecutorServiceinterface dans votre code ( de préférence par injection constructeur ) et ne pas avoir votre unité sous test acquérir lui - même, de sorte que vous avez une couture à laquelle vous pouvez échanger la mise en œuvre réelle de l' ScheduledExecutorServiceinterface cinque la maquette aux fins de tests unitaires.

Créé 03/12/2019 à 01:29
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more