即使数据库已关闭,我也希望对我的数据库独立Web层控制器进行单元测试。
但transactionManager
bean实例化失败,因为具有给定数据库凭据的bean dataSource
无法实现连接。
另外,我使用了@Transactional
,@AfterTransaction
和@BeforeTransaction
注释,我不想删除。
有没有办法定义一个虚拟(或模拟)dataSource
,我不需要提供任何数据库凭据,但仍然可以实例化我的transactionManager
bean?
答案 0 :(得分:3)
您所描述的更多是集成测试,而不是单元测试。对于单元测试,请不要启动Spring或事务管理器。只需实例化您的控制器并对其进行单元测试即可。对于集成测试,请考虑使用H2 in-memory database。 H2非常快(比Derby快得多),非常适合在需要数据库时进行测试。
答案 1 :(得分:0)
这在Spring教程中有所介绍。您必须创建DAO的In in Memory版本。
答案 2 :(得分:0)
使用dependency injection。您有两个标准且记录良好的选项来执行此操作。