2014-04-01 32 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