Unité de test de code qui envoie des messages JMS
J'ai une classe qui après avoir fait quelques trucs, envoie un message de JMS.
J'aimerais unité de test de la "trucs", mais pas nécessairement l'envoi du message.
Quand je lance mon test, les "trucs" des barres vertes, mais échoue lors de l'envoi du message (il devrait, le serveur d'application n'est pas en cours d'exécution).
Quelle est la meilleure façon de le faire, est-ce pour se moquer de la file d'attente de message, si oui, comment cela se fait.
Je suis à l'aide de Printemps, et "jmsTemplate" est injecté, avec "file d'attente".
Je viens d'ajouter la balise java, si ce n'est pas de droite, vous pouvez le supprimer.
OriginalL'auteur bmw0128 | 2008-12-02
Vous devez vous connecter pour publier un commentaire.
La réponse la plus simple que j'allais utiliser est d'écraser le message fonctionnalité d'envoi. Par exemple, si vous avez ceci:
Ensuite je voudrais écrire un test qui obscurcit la sendMessage comportement. Par exemple:
Si la quantité de code est supprimée ou obscurcie est importante, je ne voudrais pas utiliser un anonyme intérieur de la classe, mais juste un "normal" intérieur de la classe.
OriginalL'auteur Alex B
Vous pouvez injecter une moqué jmsTemplate.
En supposant easymock, quelque chose comme
Qui ferait l'affaire.
EasyMock.createMock(JmsTemplate.class)
me fait unjava.lang.NoClassDefFoundError: javax/jms/JMSException
. Toutes les suggestions?Avez-vous reçu quelque chose comme javax.jms api jar dans le classpath?
OriginalL'auteur tunaranch
Une autre option est MockRunner qui fournit à se moquer des environnements pour JDBC, JMS, JSP, JCA et EJB. Cela vous permet de définir les files d'attente/rubriques comme vous le feriez dans le "réel" en cas, et il suffit d'envoyer le message.
OriginalL'auteur Aaron Digulla
Concernant la manière d'organiser tous ces test stubbing /se moque dans une application plus large...
Nous construire et de maintenir une Entreprise de plus grande taille de l'App, qui est configuré avec le Printemps. La vraie Application s'exécute en tant qu'OREILLE sur un serveur d'applications JBoss. Nous avons défini notre Printemps contexte(s), avec un beanRefFactory.xml
Pour l'exécution de tests unitaires, nous avons juste utiliser un autre beanRefFactory.xml, qui échange le BasicServices d'utiliser une version de test. À l'intérieur de cette version de test, nous pouvons définir les haricots avec les mêmes noms que dans la version de production, mais avec un simulacre/stub ou quel que soit mise en œuvre (par exemple, base de données utilise un local Apache DPCP commun de la source de données, tandis que la version de production utilise la source de données à partir du serveur d'applications).
OriginalL'auteur Ichthyo
C'est le candidat idéal pour une utilisation jMock tests unitaires depuis votre serveur n'est pas en cours d'exécution, mais vous pouvez utiliser jMock pour simuler l'interaction avec le serveur.
OriginalL'auteur Kumar Manish