Я пытаюсь запустить интеграционные тесты для процесса веб-службы REST, который запускается во встроенном контейнере для молнии на этапе тестирования интеграции maven.Это все работает.
Я хочу настроить сервер на использование базы данных HSQL в памяти таким образом, чтобы каждый тест JUnit мог настраивать базу данных (создавать таблицы, вставлять записи) и разбирать ее (удалять записи).).
Контекст приложения процесса веб-служб определяет следующий источник данных:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="#{applicationProperties['jdbc.driver.class.name']}" />
<property name="url" value="#{applicationProperties['jdbc.url']}" />
<property name="username" value="#{applicationProperties['db.user']}" />
<property name="password" value="#{applicationProperties['db.pass']}" />
</bean>
Свойства:
jdbc.driver.class.name=org.hsqldb.jdbcDriver
jdbc.url=jdbc:hsqldb:mem:mytestdb
db.user=sa
db.pass=
При выполнении модульных тестов (для которых не требовалосьна встроенном контейнере Jetty) эта установка работала нормально.Каждый модульный тест создавал базу данных и вставлял записи следующим образом:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.core.io.ClassPathResource;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
public class TestBase {
@Autowired
protected ApplicationContext context;
...
@Before
public void setUp() {
DriverManagerDataSource ds = (DriverManagerDataSource) context.getBean("dataSource");
// Create tables
// Insert records
}
}
В моих интеграционных тестах это не работает - очевидно, потому что источник данных, который создается при запуске моего сервера в Jetty, недоступенмой класс модульного теста для вставки / удаления данных.
Мой вопрос:
- Как я могу настроить HSQL во встроенном контейнере Jetty, чтобы мой модульный тестМетод setUp () может манипулировать данными?