【问题标题】:Spring Framework integration testing with overriding DAO class具有覆盖 DAO 类的 Spring Framework 集成测试
【发布时间】:2019-01-19 13:42:03
【问题描述】:

我在 Spring 中设置集成测试来测试我的 API 端点是否正常工作。 没有代码,因为问题是设计问题。

现在我有一个特定的 DAO 类,它与真实的数据库进行 IO 操作对话。

我有一个简单的内存资源存储实现,用于测试,不需要任何数据库设置。

我的问题是我应该如何在 Spring 中配置我的测试,以便资源存储由内存存储实现完成。 (我需要模拟 http 请求并断言它们可以正常工作,现在测试已经启动并正在运行,但资源存储是使用 DAO 在真实数据库上完成的)

附:我可以将 application.properties 中的真实 db 替换为可以与当前 DAO 一起使用的 H2 db,但我不需要在 DB 层中进行更改,我需要在 DAO 层中使用不同的资源存储类的实现。

我对 Spring 测试比较陌生,我正在使用 jUnit 进行测试。

非常感谢。感谢所有帮助。

【问题讨论】:

    标签: java spring testing integration-testing


    【解决方案1】:

    如果您想在测试中覆盖 bean(使用另一个实现),您可以创建另一个 Spring 上下文(在测试类或资源中),您可以在其中创建具有 相同 ID 的 bean。

    如果您使用 XML - 就足够了,只需在测试中声明上下文时按正确的顺序放置上下文即可。如果您使用 Java 配置 - 您可能希望通过将假 bean 标记为 @Primary 来确保使用测试实现。

    【讨论】:

      猜你喜欢
      • 2019-10-31
      • 2019-05-09
      • 2018-04-04
      • 1970-01-01
      • 2014-12-25
      • 2019-08-20
      • 2011-03-08
      • 2018-11-09
      • 2019-01-31
      相关资源
      最近更新 更多