java - 在单元测试期间模拟数据源

标签 java unit-testing spring-mvc mocking datasource

即使数据库已关闭,我也想对我的独立于数据库的 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/

相关文章:

visual-studio-2010 - 有谁知道如何在 TFS 2010 中为源代码的选定部分设置单元测试 checkin 策略?

java - Spring MVC : How to unit test Model's attribute from a controller method that returns String?

java - Spring application-context.xml --- java.io.FileNotFoundException : http://www. springframework.org/schema/social/spring-social-facebook.xsd

java - 从方法中取消定时器

java - 在内部类中从本地内部类调用方法

python - 测试 ndb 实体是否已放入数据存储

php - 对 Symfony 服务类进行单元测试

java - POST 到 Spring MVC Controller 结果为 "HttpMessageNotReadableException: Could not read JSON: No suitable constructor found"

java - JPA - 从连接的表中检索信息

java - 什么是 Java 中的故障安全和故障快速迭代器