即使数据库已关闭,我也想对我的独立于数据库的 Web 层 Controller 进行单元测试。
但是 transactionManager
bean 实例化失败,因为 bean dataSource
无法使用给定的 DB 凭据实现连接。
此外,我还使用了 @Transactional
、@AfterTransaction
和 @BeforeTransaction
注释,我不想删除它们。
有没有一种方法可以定义一个虚拟(或模拟)dataSource
,我不需要提供任何数据库凭据但仍然可以实例化我的 transactionManager
bean?
最佳答案
您所描述的与其说是单元测试,不如说是集成测试。对于单元测试,不要启动 Spring 或事务管理器。只需实例化您的 Controller 并对其进行单元测试。对于集成测试,考虑只使用 H2 in-memory database . H2 非常快(比 Derby 快得多)并且非常适合在需要数据库时进行测试。
关于java - 在单元测试期间模拟数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6986592/