Spring 3 предлагает новое пространство имен jdbc
, которое включает поддержку встроенных баз данных, включая HSQLDB. Так что позаботимся об этой части.
Мне интересно, каким может быть «собственное решение». Вы можете использовать аннотации (JPA или Hibernate) для ORM ваших объектов домена, так зачем вам «собственное решение»? E.g.:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
p:dataSource-ref="dataSource"
p:packagesToScan="myapp.model" />
Для реализации теста используйте Spring TestContext Framework. Тест может выглядеть следующим образом (опять же, я предполагаю, что Spring 3 ниже, хотя он должен работать в Spring 2.5, просто изменив @Inject на @Autowired):
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({
"/beans-datasource-it.xml",
"/beans-dao.xml",
"/beans-service.xml",
"/beans-web.xml" })
@Transactional
public class ContactControllerIT {
@Inject private ContactController controller;
... setUp() and tearDown() ...
@Test
public void testGetContact() {
String viewName = controller.getContact(request, 1L, model);
... assertions ...
}
}
Например, вы поместите встроенную базу данных в beans-datasource-it.xml
. (здесь это означает интеграционный тест, а файлы находятся в пути к классам.) Контроллер в этом примере находится в beans-web.xml
и будет автоматически подключен в поле ContactController
.
Это всего лишь набросок того, что нужно делать, но, надеюсь, этого достаточно, чтобы начать работу.