2014-04-01 76 views
3

使用Spring Test DBUnit的@DatabaseSetup注释时,可以设置表模式名称吗?目前我使用这样的:春季测试DBUnit和表模式名称

@DatabaseSetup("user-data.xml") 
public class UserMapperTest { 
} 

用户data.xml中:(我也尝试过的元素名称设置为user.system_user没有任何的运气)

在这里,我米,架构称为用户创建我的表:

create table "user".system_user (...); 

而且这是在运行测试时,我得到异常:

org.h2.jdbc.JdbcSQLException: Table "SYSTEM_USER" not found; SQL statement: 
delete from SYSTEM_USER [42102-175] 

回答

0

我有类似的问题。您不能使用注释,但是您可以在连接字符串上指定模式。这是我如何解决我的情况:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="org.hsqldb.jdbcDriver" /> 
    <property name="url" value="jdbc:hsqldb:mem:fullywallet;MVCC=true" /> 
    <property name="username" value="sa" /> 
    <property name="password" value="" /> 
</bean> 
<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="packagesToScan"> 
     <list> 
      <value>your.package.to.be.scanned</value> 
     </list> 
    </property> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop> 
      <prop key="hibernate.default_schema">public</prop> 
     </props> 
    </property> 
</bean> 

在我来说,我用的是HSQLDB,但也

3

我用这一招也适用于其他数据库。 首先,我们需要的OracleConnection豆:

<bean id="oracleConnection" class="org.dbunit.ext.oracle.OracleConnection"> 
    <constructor-arg value="#{dataSource.getConnection()}"/> 
    <constructor-arg value="<your_scheme_name>"/> 
</bean> 

然后你可以使用这个注解你的方法

@DbUnitConfiguration(databaseConnection = "oracleConnection") 
@DatabaseSetup(...) 

希望它能帮助。

2

如果您使用的是spring-test-dbunit,那么您需要创建一个具有特定DBUnit配置的IDatabaseConnection。继文档的例子中,我设置这个对我来说:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:context="http://www.springframework.org/schema/context" 

     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
      http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd 
"> 
    <bean id="dbUnitDatabaseConfig" class="com.github.springtestdbunit.bean.DatabaseConfigBean"> 
     <property name="datatypeFactory"> 
      <bean class="org.dbunit.ext.postgresql.PostgresqlDataTypeFactory" /> 
     </property> 
     <!--property name="qualifiedTableNames" value="true" /--> 
     <property name="caseSensitiveTableNames" value="true" /> 
    </bean> 

    <bean id="dbUnitDatabaseConnection" class="com.github.springtestdbunit.bean.DatabaseDataSourceConnectionFactoryBean"> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="databaseConfig" ref="dbUnitDatabaseConfig"/> 
     <property name="schema" value="sapeo"/> 
    </bean> 

</beans> 
+0

我需要使用 <属性名=“qualifiedTableNames”值=“真” /> 因为在我的.xml文件中的数据与资格架构。 – anre