Я успешно протестировал некоторые DAO вне сервера веб-логики, просмотрев информацию об источнике данных через jndi. Я искал аналогичный вариант с websphere, и мне еще нужно найти решение, которое не требует жесткого кодирования имени пользователя и пароля в каком-либо месте приложения или чего-то подобного. Сейчас мои настройки jndi внутри spring выглядят так:
<bean id="applicationServerEnviromentProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="properties"><props>
<prop key="java.naming.factory.initial">com.ibm.websphere.naming.WsnInitialContextFactory</prop>
<prop key="java.naming.provider.url">iiop://localhost:2809</prop>
</props>
</property>
</bean>
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName"><value>PeopleAppDS</value></property>
<property name="jndiEnvironment"><ref local="applicationServerEnviromentProperties"/></property>
</bean>
Я протестировал соединение jndi, и оно работает, когда приложение загружено в веб-сферу. Я хотел бы иметь возможность протестировать daos внутри eclipse, например, до загрузки приложения. Любая помощь приветствуется.
Вот подробности тестового примера.
------- BaseTestCase.java --------------------
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations= {"file:data-access-config.xml"})
public class BaseTestCase {
}
----- PersonDaoTest.java ----------------
import static org.junit.Assert.assertNotNull;
import java.util.List;<br>
import org.junit.Test;<br>
import org.springframework.beans.factory.annotation.Autowired;
import ....dao.PersonDao;<br>
import ....domain.Person;<br>
public class PersonDaoTest extends BaseTestCase {
@Autowired
private PersonDao personDao;
@Test
public void findByName() {
List<Person> people = personDao.listByName("j%", false, "userId");
assertNotNull(people);
}
}