Я хотел бы посмеяться над фабрикой соединений JMS для проведения интеграционного тестирования.
<jee:jndi-lookup id="narconFactory" jndi-name="LBARQCF" resource-ref="false"/>
когда (?)
мы используем сервер websphere, а для тестирования интеграции необходимо использовать tomcat.Весенняя версия загрузки 1.5.3
РЕДАКТИРОВАТЬ : На основе комментариев я создал класс
@RunWith(SpringRunner.class)
@SpringBootTest
public class MQControllerTest {
//step 2
@Autowired
private MockMvc mvc;
@MockBean
private MQController mqController;
protected static final ConnectionFactory amqFactory = new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false");
public static final CachingConnectionFactory connectionFactory = new CachingConnectionFactory(amqFactory);
@BeforeClass
public static void startUp() throws Exception {
connectionFactory.setCacheConsumers(false);
connectionFactory.createConnection().close();
}
@AfterClass
public static void shutDown() {
connectionFactory.resetConnection();
}
@Autowired
private JmsTemplate mockJmsTemplate;
@Autowired
private SourcePollingChannelAdapter startJms;
@Before
public void setup() throws JMSException{
Mockito.reset(this.mockJmsTemplate);
}
@Test
public void test_tbm_vrijeDagenCorrectie() throws Exception {
String expectedResponse ="";
//using bddmockito
given(mqController.tmVDCorrect(any(String.class))).willReturn(expectedResponse);
this.startJms.start();
mvc.perform(get("/tm/vdc/{dgn}","2016-01-16"))
.andExpect(status().isOk());
}
}
В моих ресурсах - configфайл ** edit *** использовал полное имя пакета и сделал connectionFactory общедоступным
<util:constant id="narconFactory" static-field="n.d.poc.MQControllerTest.connectionFactory"/>
<util:constant id="vanconFactory" static-field="n.d.poc.MQControllerTest.connectionFactory"/>
Ошибка:
Нет подходящего компонента типа 'org.springframework.test.web.servlet.MockMvc 'доступно: ожидается, по крайней мере, 1 бин, который квалифицируется как кандидат для автоматической передачи.Аннотации зависимостей: {@ org.springframework.beans.factory.annotation.Autowired (обязательно = true)} в org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound (DefaultListableBeanFactory).5.RELEASE.jar: 4.3.5.RELEASE]
Не уверен, в чем моя ошибка EDIT2:
Причина:org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем «narconFactory»: сбой вызова метода init;Вложенным исключением является javax.naming.NoInitialContextException: необходимо указать имя класса в свойстве среды или системы, либо в качестве параметра апплета, либо в файле ресурсов приложения: java.naming.factory.initial по адресу org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.555) ~ [spring-beans-4.3.8.RELEASE.jar: 4.3.8.RELEASE] в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:48-beans-[весна-483).8.RELEASE.jar: 4.3.8.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject (AbstractBeanFactory.java:306) ~ [spring-beans-4.3.8.RELEASE.jar: 4.3.8.RELEASE] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:230) ~ [spring-beans-4.3.8.RELEASE.jar: 4.3.8.RELEASE] в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory )j.~ [spring-beans-4.3.8.RELEASE.jar: 4.3.8.RELEASE] в org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:197) ~ [spring-beans-4.3.8.RELEASE.jar: 4.3.8.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory.java:742) ~ [spring-beans-4.3.8.RELEASE.jar: 4.3.8.RELEASE] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext.java:866) ~ [spring-context-4.3.8.RELEASE.jar: 4.3.8.RELEASE] в org.springfrapp.suAbstractApplicationContext.refresh (AbstractApplicationContext.java:542) ~ [spring-context-4.3.8.RELEASE.jar: 4.3.8.RELEASE] в org.springframework.boot.SpringApplication.refresh (SpringApplicaion.java:737) ~ [spring-boot-1.5.3.RELEASE.jar: 1.5.3.RELEASE] в org.springframework.boot.SpringApplication.refreshContext (SpringApplication.java:370) ~ [spring-boot-1.5.3.RELEASE.jar: 1.5.3.RELEASE] at org.springframework.boot.SpringApplication.run (SpringApplication.java:314) ~ [spring-boot-1.5.3.RELEASE.jar: 1.5.3.RELEASE]в org.springframework.boot.test.context.SpringBootContextLoader.loadContext (SpringBootContextLoader.java:120) ~ [spring-boot-test-1.5.3.RELEASE.jar: 1.5.3.RELEASE] в org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal (DefaultCacheAwareContextLoaderDelegate.java:98) ~ [spring-test-4.3.8.RELEASE.jar: 4.3.8.RELEASE] вorg.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext (DefaultCacheAwareContextLoaderDelegate.java:116) ~ [spring-test-4.3.8.RELEASE.jar: 4.3.8.RELEASE] ... 27 общих кадров опущено * 10
почему модульное тестирование ищет java.naming.factory.initial?можно указать в свойствах приложения и с каким значением?
EDIT3:
пример кода в github https://github.com/kswat/LRIntegrationUnit