2016-05-19 22 views
0

我有下面的Java類,它從JMS隊列中檢索消息。這個類在騾子流中被調用。你能否請教我如何爲這個班級寫一篇Junit?我試圖創建一個獨立的經紀人,但我有麻煩訪問Mule流中的ActiveMq的Java組件的單元測試

public Object getMessages(final MuleEventContext eventContext) 
{ 
    final String consumerID = eventContext.getMessage().getProperty("consumerID", PropertyScope.INVOCATION); 
    final String messageSelector = "ConsumerID = '" + consumerID + "'"; 

    JmsConnector amqConnector = (JmsConnector) eventContext.getMuleContext().getRegistry().lookupConnector("Active_MQ"); 
    ConnectionFactory factory = amqConnector.getConnectionFactory(); 
    Connection connection = null; 

    List<String> listOfMessages = null; 

    try 
    { 
     connection = factory.createConnection();    

     //Consumer Settings 
     Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); 
     Queue queue = session.createQueue(queuename");    
     MessageConsumer consumer = session.createConsumer(queue, messageSelector);    

     //Browser Settings 
     Session sessionBrowser = amqConnector.getSession(false, false); 
     Queue queueBrowser = sessionBrowser.createQueue(queuename); 
     QueueBrowser qBrowser = sessionBrowser.createBrowser(queueBrowser, messageSelector); 
     Enumeration<Message> enumeration = qBrowser.getEnumeration(); 
     connection.start(); 

     listOfMessages = new ArrayList<String>();   

     while (enumeration.hasMoreElements()) 
     { 
      enumeration.nextElement(); 
      Message message = consumer.receive(); 
      TextMessage msg = (TextMessage) message;   
      listOfMessages.add(msg.getText()); 

     } 



     //Close Browser Settings 
     qBrowser.close(); sessionBrowser.close(); 
     //Close Consumer Settings 
     consumer.close(); session.close(); 
     //Close Connection 
     connection.close(); 
    } 
    catch (Exception e) 
    { 
     throw new RuntimeException("Unable to retrieve messages from Queue "+ e); 
    } 

} 

回答

0

您可以創建FunctionalTestCase,然後:直接通過調用方法

  • 測試類,或
  • 測試整個場景通過調用流程

    public class MessageServiceTest extends FunctionalTestCase { 
    
        @Test 
        public void testJavaClass() throws Exception { 
         MuleEventContext eventContext = MuleTestUtils.getTestEventContext("", MessageExchangePattern.REQUEST_RESPONSE, muleContext); 
    
         MessageService messageService = new MessageService(); 
         assertNotNull(messageService.getMessages(eventContext)); 
        } 
    
        @Test 
        public void testFlow() throws Exception { 
         MuleEvent event = runFlow("messageserviceFlow"); 
         MuleMessage message = event.getMessage(); 
    
         assertNotNull(message); 
         assertNotNull(message.getPayload()); 
        } 
    
        protected String getConfigResources() { 
         return "messageservice.xml"; 
        } 
    
    }