这就是我最终做到的方式
@RunWith(SpringRunner.class)public class CamelRouteConfigTest extends CamelTestSupport { private static final Logger LOG = LoggerFactory.getLogger(CamelRouteConfigTest.class); private static BrokerService brokerSvc = new BrokerService(); @Mock private QueueEventHandler queueEventHandler; @BeforeClass //Sets up a embedded broker. public static void setUpBroker() throws Exception { brokerSvc.setBrokerName("TestBroker"); brokerSvc.addConnector("tcp://localhost:61616"); brokerSvc.setPersistent(false); brokerSvc.setUseJmx(false); brokerSvc.start(); } @Override protected RoutesBuilder createRouteBuilder() throws Exception { return new CamelConfig().route(); } // properties in .yml has to be loaded manually. Not sure of .properties file @Override protected Properties useOverridePropertiesWithPropertiesComponent() { YamlPropertySourceLoader loader = new YamlPropertySourceLoader(); try { PropertySource<?> applicationYamlPropertySource = loader.load( "properties", new ClassPathResource("application.yml"),null);// null indicated common properties for all profiles. Map source = ((MapPropertySource) applicationYamlPropertySource).getSource(); Properties properties = new Properties(); properties.putAll(source); return properties; } catch (IOException e) { LOG.error("application.yml file cannot be found."); } return null; } @Override protected JndiRegistry createRegistry() throws Exception { JndiRegistry jndi = super.createRegistry(); MockitoAnnotations.initMocks(this); jndi.bind("queueEventHandler", queueEventHandler); return jndi; } @Test // Sleeping for a few seconds is necessary, because this line template.sendBody runs in a different thread and // CamelTest takes a few seconds to do the routing. public void testRoute() throws InterruptedException { template.sendBody("activemq:productpushevent", "HelloWorld!"); Thread.sleep(2000); verify(queueEventHandler, times(1)).handleQueueEvent(any()); } @AfterClass public static void shutDownBroker() throws Exception { brokerSvc.stop(); }}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)