我有一套单元测试。有些人会使用dataSource
,有些则会使用hsqlbDataSource
。此数据源不是我的单元测试/代码中的有线bean,而是通过模板和事务管理器传递使用。因此我打算像这样使用bean defs:
<jee:jndi-lookup id="dataSource" jndi-name="jdbc/myDataSource"
cache="true" resource-ref="true" lookup-on-startup="false"
proxy-interface="javax.sql.DataSource" />
<jee:jndi-lookup id="hsqlbDataSource" jndi-name="jdbc/myDataSource"
cache="true" resource-ref="true" lookup-on-startup="false"
proxy-interface="javax.sql.DataSource" />
<bean id="qmat-das-jdbcTemplate"
class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate"
c:dataSource-ref="${test.datasource:dataSource}" />
<bean id="transactionManager"
class="org.springframework.transaction.jta.WebSphereUowTransactionManager">
<property name="dataSource" ref="${test.datasource:dataSource}"/>
</bean>
我想要我的单元测试(当然有许多测试)来挑选和选择要使用的数据源。理想情况下,对我来说有意义的是每个单元测试都有一个注释,它将系统属性设置为覆盖默认的数据库。有没有一种优雅的方法来实现没有属性文件,但只需通过注释设置java属性?
答案 0 :(得分:0)
使用注释时,无法使用开箱即用的功能,但请查看Spring 3 profiles,因为它允许激活/停用Bean组。
可以使用系统属性或代码激活bean。可以将此代码放在测试超类中以激活仅测试bean:
springContext.getEnvironment().setActiveProfiles("test")