Java 如何使用数据库单元初始化数据库(在语句中找不到表)?

Java 如何使用数据库单元初始化数据库(在语句中找不到表)?,java,spring,jdbctemplate,spring-test-dbunit,Java,Spring,Jdbctemplate,Spring Test Dbunit,我有一个简单的spring项目,并尝试使用它进行一些服务测试。我使用数据库访问。bean配置: <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" c:dataSource-ref="dataSource"/> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDat

我有一个简单的spring项目,并尝试使用它进行一些服务测试。我使用数据库访问。bean配置:

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" c:dataSource-ref="dataSource"/>

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
        <property name="url" value="jdbc:hsqldb:mem:springtestdbunit"/>
        <property name="username" value="sa"/>
        <property name="password" value=""/>
    </bean>
Cars.xml是一个简单的数据集:

<?xml version="1.0" encoding="UTF-8"?>
<dataset>
    <car brand="BMW" model="E91" year="2006" doorsNumber="5" plate="XXX1234" />
    <car brand="Hyundai" model="Accent" year="2000" doorsNumber="4" plate="YYY333" />
</dataset>

我必须纠正配置中的错误,但在调用carService.sizeInGarage()时,我看到一条消息:

org.springframework.jdbc.badsqlgramarexception:StatementCallback; 错误的SQL语法[从car中选择count()];嵌套异常是 java.sql.SQLException:在语句[SELECT count()中找不到表 [从汽车上]


我应该在运行测试之前初始化数据库,还是因为问题而找不到xml文件?如何检查hsqldb是否启动并正常工作?

在运行单元测试之前,您需要提供一种创建模式的方法。DbUnit的工作方式是在运行特定测试之前将数据库置于“已知状态”

如果您安装了RDBMS,那么您应该已经创建了数据库;但是,如果您使用的是内存中的数据库(更可能是这样),则必须提供SQL脚本(或其他方式),以便在启动内存中的数据库时能够为您创建模式


看一看,这可能会有帮助。

是的,你说得对。我必须先初始化DB模式。在sswai-test.xml中,我添加了:\n其中init-datasource.sql只是创建表car。
<?xml version="1.0" encoding="UTF-8"?>
<dataset>
    <car brand="BMW" model="E91" year="2006" doorsNumber="5" plate="XXX1234" />
    <car brand="Hyundai" model="Accent" year="2000" doorsNumber="4" plate="YYY333" />
</dataset>