如何防止 jdbc 在单元测试期间尝试连接到 mysql 数据库
how to prevent jdbc from trying to connect to a mysql database during unit testing
我正在申请一个学校项目,但我 运行 遇到了一个问题,当我尝试 运行 单元测试时,它会尝试连接到数据库在启动应用程序时,这不是测试所必需的(因为它将被模拟),并且在 CI/CD 管道中不可用。
jdbc connection error
我正在 Java Maven Springboot 中构建我的项目,想知道如何防止它在 运行 测试时尝试连接到数据库。
这是我存储库的 link:https://gitlab.com/kwetter_jack/Kwetter_posts/-/tree/ci_cd_setup
您的测试 类 具有 @SpringBootTest
注释,它将启动 Spring 应用程序上下文 - 当您的应用程序使用数据库时,测试也会尝试设置和使用数据库连接。
最简单的解决方案是删除注释,这样测试就不会再尝试连接到数据库。您可能需要模拟更多依赖项,因为 Spring 不再为您创建这些依赖项。您还可以查看 https://www.baeldung.com/spring-boot-testing 以了解如何更改测试的其他想法。
或者,如果您确实想要/需要应用程序上下文 运行,您可以为定义和使用内存数据库的测试添加 application.yaml
,以便测试可以连接到 -有关如何执行此操作的详细信息,请参阅 https://www.baeldung.com/spring-boot-h2-database。
只需将 spring.datasource
下的值更改为 H2 database
以防止
应用程序连接真实数据库。
仅供参考,您无需从原始 application.yml 复制所有配置,只需复制一些您需要覆盖的配置。
当我调查 spring boot H2 in-memory 数据库时(正如 Chris Olive 和 Paranaaan 所建议的),我还遇到了使用测试容器的选项。在查看这个之后,我发现这使项目能够创建一个带有 MySQL 图像的临时 docker 容器,我可以在项目测试期间使用它,考虑到我计划使用 docker 无论如何,为了我的微服务项目的集成测试,我尝试了这个并且它像我希望的那样工作。
如果有人对我使用的测试容器解决方案感兴趣,可以在这里找到信息:
我正在申请一个学校项目,但我 运行 遇到了一个问题,当我尝试 运行 单元测试时,它会尝试连接到数据库在启动应用程序时,这不是测试所必需的(因为它将被模拟),并且在 CI/CD 管道中不可用。
jdbc connection error
我正在 Java Maven Springboot 中构建我的项目,想知道如何防止它在 运行 测试时尝试连接到数据库。
这是我存储库的 link:https://gitlab.com/kwetter_jack/Kwetter_posts/-/tree/ci_cd_setup
您的测试 类 具有 @SpringBootTest
注释,它将启动 Spring 应用程序上下文 - 当您的应用程序使用数据库时,测试也会尝试设置和使用数据库连接。
最简单的解决方案是删除注释,这样测试就不会再尝试连接到数据库。您可能需要模拟更多依赖项,因为 Spring 不再为您创建这些依赖项。您还可以查看 https://www.baeldung.com/spring-boot-testing 以了解如何更改测试的其他想法。
或者,如果您确实想要/需要应用程序上下文 运行,您可以为定义和使用内存数据库的测试添加 application.yaml
,以便测试可以连接到 -有关如何执行此操作的详细信息,请参阅 https://www.baeldung.com/spring-boot-h2-database。
只需将 spring.datasource
下的值更改为 H2 database
以防止
应用程序连接真实数据库。
仅供参考,您无需从原始 application.yml 复制所有配置,只需复制一些您需要覆盖的配置。
当我调查 spring boot H2 in-memory 数据库时(正如 Chris Olive 和 Paranaaan 所建议的),我还遇到了使用测试容器的选项。在查看这个之后,我发现这使项目能够创建一个带有 MySQL 图像的临时 docker 容器,我可以在项目测试期间使用它,考虑到我计划使用 docker 无论如何,为了我的微服务项目的集成测试,我尝试了这个并且它像我希望的那样工作。
如果有人对我使用的测试容器解决方案感兴趣,可以在这里找到信息: