2014-11-03 69 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