Spring 使用覆盖 DAO 的框架集成测试 class

Spring Framework integration testing with overriding DAO class

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

现在我有一个特定的 DAO class,它与一个真正的数据库进行 IO 操作。

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

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

P.S。我可以将 application.properties 中的真实数据库替换为可以与当前 DAO 一起使用的 H2 数据库,但我不需要在 DB 层中进行更改,我需要它在 DAO 层中使用资源存储的不同实现 class.

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

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

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

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

来确保使用测试实现