2014-11-03 65 views
1

我正在同春和一的Mockito JUnit測試改寫財產,我有以下配置可注射的bean:Maven的不JUnit的/的Mockito的context.xml中

<bean name="roleDefault" id="roleDefault" class="java.lang.String"> 
    <constructor-arg> 
    <value>${database.rule}</value> 
    </constructor-arg> 
</bean> 

我的聚甲醛。 XML已經在配置文件中這個配置與「desenvolvimento」的ID:

<database.rule>SET ROLE RO_APP IDENTIFIED BY WEBAPP</database.rule> 

的問題是:無論是運行在Eclipse中或與mvn test所有測試不計算的${database.rule}值,導致出現以下錯誤:

Caused by: org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "${database.rule}" [42000-165] 
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:329) 
    at org.h2.message.DbException.get(DbException.java:169) 
    at org.h2.message.DbException.get(DbException.java:146) 
    at org.h2.message.DbException.getSyntaxError(DbException.java:181) 
    at org.h2.jdbc.JdbcConnection.checkRunOver(JdbcConnection.java:1318) 
    at org.h2.jdbc.JdbcConnection.translateSQL(JdbcConnection.java:1271) 
    at org.h2.jdbc.JdbcConnection.translateSQL(JdbcConnection.java:1187) 
    at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:265) 
    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$1.doPrepare(StatementPreparerImpl.java:98) 
    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:182) 
    ... 75 more 

爲什麼maven不重寫database.rule的值?

+0

因爲它不應該...的'$ {...}'在上下文中的文件是由彈簧不是行家替代屬性的佔位符。 – 2014-11-03 12:44:42

+0

基本測試也用'@RunWith(SpringJUnit4ClassRunner.class)' – ViniciusPires 2014-11-03 12:46:49

+0

註解這仍然不能讓maven取代東西。我強烈建議閱讀sprnig文檔。添加一個'',它加載一個屬性文件,該文件又將取代'$ {...}'佔位符。 – 2014-11-03 12:49:33

回答

2

確保XML配置文件的位置包含在pom.xml的資源過濾器中。

<resource> <directory>src/main/resources</directory> <filtering>true</filtering> <includes> <include>**/*.xml</include> </includes> </resource>

+0

它的工作!我完全忘了那個......非常感謝! – ViniciusPires 2015-05-07 18:56:26