views:

42

answers:

3

There is a message(text), which format and content i definitely know.
For now,class in Java,that parses and reads this message from file,is implemented.

In real world, this message will come from Message Queue.

For now I should simulate, mock or generate Message Queue on my local PC for testing purposes.

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.

Concerning this specification, i need JMS provider.

JMS client-it's my class that reads message.
Message itself i know.

So the question is how to start message queue?
How can i simulate it programmaticaly from Java code? Can i mock it somehow?

Thanks.

+3  A: 

Generally it is a bad practice to mock or simulate an external system, such as JMS. A better idea would be to abstract your logic into a standalone bean, implement a delegation layer that would bridge JMS with your bean. With such design you can test your bean in isolation from JMS and then have system test that would test the whole integration with real JMS system.

As for in-process JMS you can look at SomnifugiJMS.

Eugene Kuleshov
+2  A: 

If you use Spring Integration, you can do this pretty easily. It has a very basic, abstract "Channel" implementation. You can create and test your producers and consumers, and when you're ready to move a step further, you just specify a JMS adapter on top of your Channel.

jcalvert
+1  A: 

Generally I agree with Eugene Kuleshov. But if you still need such mocking I'd suggest you to use BlckingQueue from java.util.concurent package. I think it is not a big problem to wrap it with javax.jms.Queue interface. BTW it is a good idea for some kind of open-source project.

AlexR
I've just found Apache ActiveMQ. Trying this for first.
sergionni