【问题标题】:How to setup my-sql db for unit test in grails 3如何在 grails 3 中为单元测试设置 mysql db
【发布时间】:2019-11-17 22:52:54
【问题描述】:

我在 application.yml 中使用了以下代码

environments:
  test:
        dataSource:
            dbCreate: none
            url: jdbc:mysql://<<IP>>/unit_test_db
            username: ****
            password: ****

grails 仍然使用内存数据库进行单元测试。

【问题讨论】:

    标签: grails grails3.2.0


    【解决方案1】:

    这可能是因为您的测试是在开发环境中运行的。可能导致这种情况的一件事是,如果您直接从 IDE 运行测试,而 grails.env 未设置为 test。如果您使用 Gradle 运行测试,这会自动发生。我在 https://blog.jetbrains.com/idea/2017/07/webinar-recording-why-intellij-idea-is-the-premier-ide-for-grails-3/ 的视频 36:00 左右讨论这个问题。如果您使用 IntelliJ,这可能会有所帮助。解决此问题的另一种方法是将 IDE 配置为将测试运行委托给 Gradle。如果您使用不同的 IDE,同样的想法也适用,但如何解决问题的详细信息将取决于您使用的 IDE。

    如果您在从 Gradle 运行时遇到同样的问题,那么您的项目中可能存在某些配置错误,并且在不了解项目的更多信息的情况下可能难以识别其中的细节。

    希望对你有帮助。

    【讨论】:

    • 感谢您的回复@Jeff。我正在使用 /gradlew test/ 和 /grails test-app/ 命令运行。我已经记录了 env 和 db url。请按以下方式查找。仍然 grails 使用内存数据库。 2019-07-08 23:03:51.687[INFO] com.ecw.functional.FunctionalSpecsController-****ENV:test**** 2019-07-08 23:03:52.000[INFO] com.ecw.functional .FunctionalSpecsController - ***DB URL :jdbc:mysql:///unit_test_db****
    • @KapilThakkar 看起来环境设置正确。应用程序中可能存在许多可能导致您描述的行为的事物。如果您可以分享一个演示该问题的示例应用程序,那么排除故障将是微不足道的。
    猜你喜欢
    • 2016-02-27
    • 1970-01-01
    • 2017-08-24
    • 2014-11-25
    • 1970-01-01
    • 2018-06-14
    • 2015-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多