Mock oder simulieren Message Queue (JMS)
Gibt es eine message(text), die in format und Inhalt den ich auf jeden Fall wissen.
Für jetzt,Klasse in Java,Parsen und liest diese Nachricht vom Datei,umgesetzt wird.
In der realen Welt, diese Nachricht kommt dann aus der Message Queue.
Ich jetzt simulieren soll, zu verspotten oder zu generieren Message Queue auf meinem lokalen PC für Testzwecke.
Java spec(java-jms):
JMS provider: A messaging system that implements the JMS specification.
JMS clients: Java applications that send and receive messages.
Messages: Objects that are used to communicate information between JMS clients.
Bezug auf diese Angabe, die ich brauche JMS-provider.
JMS-client-es ist meine Klasse, die liest die Nachricht.
Nachricht selbst ich weiß.
Die Frage ist also, wie starten Sie message queue?
Wie kann ich simulieren programmaticaly von Java-code aus? Kann ich verspotte es irgendwie?
Dank.
InformationsquelleAutor der Frage sergionni | 2010-10-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie Spring IntegrationSie können dies tun, ziemlich leicht. Es hat eine sehr einfache, abstrakte "Kanal" Umsetzung. Sie erstellen und testen können, Ihre Produzenten und Konsumenten, und wenn Sie bereit sind, einen Schritt weiter zu gehen, müssen Sie nur geben Sie einen JMS-adapter auf der Oberseite des Kanals.
InformationsquelleAutor der Antwort jcalvert
Generell ist es eine schlechte Praxis zu simulieren oder simulieren Sie ein externes system, wie z.B. JMS. Eine bessere Idee wäre zu Abstrakt, die Logik in eine standalone-bean implementieren Sie eine delegation Schicht, Brücke JMS mit deiner Bohne. Mit einem solchen design können Sie testen Sie Ihre Bohnen in isolation von JMS und dann das system testen, der test würde die ganze integration mit dem real JMS-system.
Als für die in-Prozess-JMS-Sie können sich SomnifugiJMS.
InformationsquelleAutor der Antwort Eugene Kuleshov
Um eine Anwendung zu testen in isolation, wenn die Reale Produktion JMS-provider nicht verfügbar ist, können Sie eines von:
JMS mock: Beim testen Ihrer Anwendungen können Sie simulieren den nicht vorhandenen Abhängigkeiten mit test-doubles. Sie können eine JMS-mock, die simulieren das Verhalten von realen JMS-provider. API-Simulations-tools erlauben Ihnen das erstellen von JMS-mocks (wählen Sie ein Werkzeug unterstützt JMS, zum Beispiel Verkehr Parrot). Die Verwendung einer JMS-mock ermöglichen Sie ein hohes Maß an Flexibilität während der Prüfung. Sie werden in der Lage sein, um test-typischen Produktions-wie test-Szenarien als auch hypothetische Situationen, die durch die Einrichtung Ihres mock Rückkehr fast jede Art von Nachricht. Sie werden auch in der Lage zu simulieren, verschiedene Arten von Fehlern, die oft schwer zu tun mit real JMS-Provider. Haben Sie einen Blick auf in diesem Einführungs-video zum JMS-service Virtualisierung für ActiveMq (service-Virtualisierung ist ein anderer name für ein Modell) oder diese für IBM MQ. Hinweis: diese videos sind aus dem Verkehr Parrot, aber das Prinzip beschrieben, es gelten zu jedem Werkzeug, das Sie wählen.
JMS-provider-test-Instanz: führen Sie einen JMS-provider auf Ihrem laptop oder in einem Ihrer test-Umgebungen, und verbinden Sie Ihre Anwendung anstelle der Produktion Anbieter. Beim Einsatz von open-source-Anbietern in der Produktion wie ActiveMQ oder RabbitMQ, sollte es leicht sein, führen Sie einen der Sie auf Ihrem laptop ebenso, weil Sie sind leicht und frei. Für IBM Websphere MQ, können Sie den kostenlosen IBM MQ für Entwickler.
JMS-Klasse mock: können Sie Mockito in unit-tests, mock-Interaktion mit JMS-Klassen. Diese Lösung kommt mit den trade-offs von unit-Tests. Für weitere Informationen zu diesen finden Sie unter testen Pyramide. Wenn Sie möchten, um black-box-testen Sie Ihre Anwendung, verwenden Sie eine der Lösungen, die ich oben beschrieben habe.
InformationsquelleAutor der Antwort Wojtek
Generell bin ich einverstanden mit Eugene Kuleschow. Aber wenn Sie noch brauchen, so Spott ich würde vorschlagen, Sie verwenden BlckingQueue von java.util.concurent package. Ich denke, es ist nicht ein großes problem, um wickeln Sie es mit javax.jms.Queue-interface. BTW es ist eine gute Idee für einige Arten von open-source-Projekt.
InformationsquelleAutor der Antwort AlexR