Я столкнулся с большой проблемой создания экземпляра weblogic Initial context при запуске тестов jUnit.
Приложение использует Spring / Hibernate / Weblogic.
В коде приложения методы используют JMS-прокси для отправки сообщений в JMS, очереди настраиваются на weblogic.
Моя проблема заключается в том, что в то время как JUnit тестирует, мне нужно, чтобы сервер weblogic работал на локальном компьютере, чтобы инициализировать WeblogicInitialContext, который используется в прокси JMS. Моему тесту junit не нужно ничего отправлять на сервер, без JMS, без источников данных. Все они управляются рамками пружинных юнит-тестов.
Я хочу отделить / избавиться от Weblogic для моих тестов Junit. Пожалуйста, предложите.
Вот мой код:
Это мой тестовый контекст приложения XML:
<beans xmlns="http://www.springframework.org/schema/beans"
...
>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<util:properties id="webLogicInitialContext">
<prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop>
<prop key="java.naming.provider.url">t3://localhost:7001</prop>
<prop key="java.naming.security.principal">admin</prop>
<prop key="java.naming.security.credentials">password</prop>
</util:properties>
<jee:jndi-lookup id="responseProxyConnectionFactory"
jndi-name="jms/ConnectionFactory" environment-ref="webLogicInitialContext"/>
<bean id="responseProxyJmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory"
ref="responseProxyConnectionFactory" />
</bean>
</beans>
Это один из методов класса Java:
public class Order {
public void addOrder(OrderRequest addOrderRequest) {
PurchaseOrder newOrder = orderHelper.createOrder(addOrderRequest);
orderDaoHibernate.addOrder(newOrder);
responseProxy.send(newOrder);
}
}
Мой тест:
@RunWith(SpringJUnit4ClassRunner.class)
@TestExecutionListeners( {TransactionalTestExecutionListener.class, DependencyInjectionTestExecutionListener.class,DirtiesContextTestExecutionListener.class })
@ContextConfiguration(locations={"/test-application-context.xml"})
@TransactionConfiguration(defaultRollback=true)
public class TestOrder {
@Test
@Transactional
public void testMyOrder(){
Order ord = new Order();
OrderRequest req = new OrderRequest();
....
ord.addOrder(req);
}
}
Если я запускаю этот тест, среда Spring пытается загрузить WeblogicInitialContext, и если локальный weblogic не запускается, он выдает исключения.
Я не хочу отправлять сообщения JMS при вызове этого метода из Junit.
Как я могу создать фиктивный WeblogicInitialContext.
Пожалуйста, помогите.
Некоторая часть исключения;
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'responseProxyConnectionFactory': Invocation of init method failed; nested exception is javax.naming.CommunicationException [Root exception is java.net.ConnectException: t3://localhost:7001: Destination unreachable; nested exception is: