我在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进行测试。
答案 0 :(得分:1)
示例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
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();
}