Comment tester Printemps @Prévue
Comment puis-je tester @Prévue
des tâches de travail dans mon printemps-application de démarrage?
package com.myco.tasks;
public class MyTask {
@Scheduled(fixedRate=1000)
public void work() {
//task execution logic
}
}
Que voulez-vous tester exactement? Si vous voulez tester ce travail() fait ce qu'il est censé faire, vous pouvez tester de toute autre méthode d'un autre bean: vous créez une instance de la fève, l'appel à la méthode, et le test qu'il fait ce qu'il est censé faire. Si vous voulez tester que la méthode est invoquée par le Printemps à chaque seconde, il n'y a pas de véritable point: le Printemps a testé pour vous.
Je suis d'accord avec vous, essayer de tester le cadre de la fonctionnalité ne semble pas nécessaire pour moi, mais j'ai été nécessaires à. J'ai trouvé un travail autour de que par l'ajout d'un petit message de journal et de vérifier si le message attendu a en effet enregistré pour le calendrier prévu.
Un autre avantage de ce test est d'avoir un test en échec si le
Je suis d'accord avec vous, essayer de tester le cadre de la fonctionnalité ne semble pas nécessaire pour moi, mais j'ai été nécessaires à. J'ai trouvé un travail autour de que par l'ajout d'un petit message de journal et de vérifier si le message attendu a en effet enregistré pour le calendrier prévu.
Un autre avantage de ce test est d'avoir un test en échec si le
@EnableScheduling
annotation est supprimé.OriginalL'auteur S Puddin | 2015-08-31
Vous devez vous connecter pour publier un commentaire.
Si nous supposons que votre travail s'exécute dans un petit intervalles que vous voulez vraiment que votre test à attendre pour le travail à exécuter et vous voulez juste tester si l'emploi est invoquée vous pouvez utiliser la solution suivante:
Ajouter Awaitility à classpath:
Test d'écriture similaires à:
verify()
ettimes()
fonctions ne peuvent pas être trouvés. Pourriez-vous spécifier le package?Ces fonctions viennent de Mockito. Le package est:
org.mockito.Mockito#verify
et similaires pourtimes
.Ce n'est pas une bonne solution. Cela ne fonctionne que pour ceux @Programmées sont exécutées en quelques secondes. Que penser d'un hebdomadaire de l'exécution?
nous supposons que votre travail s'exécute dans un petit intervalles". Je ne pense pas que cela fait beaucoup de sens pour tester si la tâche s'exécute, mais plutôt le travail sur le comportement. Néanmoins, si vous avez vraiment ne voulez pas, c'est une des options que j'en suis conscient. Vous êtes invités à soumettre votre réponse 🙂
OriginalL'auteur Maciej Walkowiak
C'est souvent dur. Vous pouvez envisager de charger Printemps contexte lors de l'essai et de faux quelques haricots pour être en mesure de vérifier prévue invocation.
J'ai comme exemple dans mon dépôt Github. Il est simple prévue exemple testé avec l'approche décrite.
N'hésitez pas à poster votre solution. Si vous n'avez pas, je suppose que vous n'en avez pas.
OriginalL'auteur luboskrnac
La question est: "que voulez-vous tester".
Si votre réponse est
"Je veux savoir que le Printemps s'exécute ma tâche planifiée quand je le veux",
ensuite vous testez Printemps,
pas votre code.
Ce n'est pas quelque chose que vous avez besoin de test de l'unité.
Si votre réponse est "je veux savoir que j'ai configuré ma tâche correctement",
ensuite, écrivez une application de test avec l'un des plus fréquemment tâche en cours d'exécution et vérifiez que
la tâche s'exécute lorsque vous vous attendez à exécuter.
Ce n'est pas un test de l'unité,
mais allons montrer que vous savez comment le configurer votre texte correctement.
Si la réponse est "je veux savoir que la tâche que j'ai écrit fonctionne correctement",
ensuite, vous devez unité de test de la méthode tâche.
Dans votre exemple,
vous voulez de l'unité de test de la
work()
méthode.Faire cela, écrire un test unitaire qui appelle directement votre méthode de tâche (
work()
).Par exemple,
OriginalL'auteur DwB
cette classe représente la génération des planificateurs cron à l'aide de springframework planification
ici est la journalisation de sortie:
OriginalL'auteur Tiago Medici
Nous pouvons utiliser au moins deux approches afin de tester les tâches planifiées avec le Printemps:
Si nous utilisons le printemps de démarrage on va avoir besoin les dépendances suivantes:
Nous pourrions ajouter une
count
à laTask
et de l'incrémenter à l'intérieur de lawork
méthode:Puis vérifier le
count
:Dans ce cas, nous devons ajouter la Awaitility dépendance:
Et d'utiliser ses DSL pour vérifier le nombre d'invocations de la méthode
work
:Nous avons besoin de prendre en compte que même si elles sont bonnes il est préférable de se concentrer sur les tests unitaires de la logique à l'intérieur de la méthode de travail.
J'ai mis un exemple ici.
OriginalL'auteur SHoko