如何在SpringFramework 2中将dataSource注入jUnit for Integration Testing

时间:2014-01-05 16:04:59

标签: java spring junit datasource integration-testing

我在spring-beans.xml文件中定义了以下dataSource,我将其用于连接远程数据库:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/sample"/>
    <property name="username" value="root"/>
    <property name="password" value="root"/>

</bean>

我正在构建一些我想要运行的jUnit集成测试。从这些测试中调用的一些函数使用此数据源来访问我的数据库。当我部署我的项目时,dataSource是根据我已经完成的bean配置注入的。

对于将独立于Web应用程序运行的这些测试,如何注入此dataSource以访问数据库?

我使用SpringFramework 2.5.6版本和jUnit4进行测试。

1 个答案:

答案 0 :(得分:1)

使用Spring进行集成测试

示例jUnit集成测试

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "spring-beans.xml")
public class MyIntegrationTest {

   @Autowired
   DataSource dataSource;

}

Spring Framework Reference Documentation&gt;中了解详情Integration Testing&gt; JDBC Testing Support

Database testing Unitils

  

Unitils极大地降低了这种复杂性,使数据库测试变得简单易用。

Unitils提供features for unit testing when working with Spring

public abstract class BaseDAOTest extends UnitilsJUnit4 {

    @TestDataSource
    private DataSource dataSource;

    @Before    
    public void initializeDao() {
        BaseDAO dao = getDaoUnderTest();
        dao.setDataSource(dataSource);
    }

    protected abstract BaseDAO getDaoUnderTest();
}