Java 如何让integration tests setUp()操作运行在嵌入式Jetty容器中的内存数据库中的HSQL数据?
我正在尝试对RESTWeb服务流程运行集成测试,该流程在maven集成测试阶段的嵌入式jetty容器中启动。这一点正在发挥作用 我想将服务器配置为使用内存中的HSQL DB,这样每个JUnit测试都可以设置数据库(创建表、插入记录),并将其拆下(删除记录) web服务流程的应用程序上下文定义了以下数据源:Java 如何让integration tests setUp()操作运行在嵌入式Jetty容器中的内存数据库中的HSQL数据?,java,spring,integration-testing,hsqldb,embedded-jetty,Java,Spring,Integration Testing,Hsqldb,Embedded Jetty,我正在尝试对RESTWeb服务流程运行集成测试,该流程在maven集成测试阶段的嵌入式jetty容器中启动。这一点正在发挥作用 我想将服务器配置为使用内存中的HSQL DB,这样每个JUnit测试都可以设置数据库(创建表、插入记录),并将其拆下(删除记录) web服务流程的应用程序上下文定义了以下数据源: <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<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>
执行单元测试(不依赖要运行的嵌入式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中启动服务器时创建的数据源不能被我的单元测试类访问以插入/删除数据
我的问题:
- 如何在嵌入式Jetty容器中配置HSQL,以便我的unit test setUp()方法可以操作数据
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
}
}