【问题标题】:Specify database in test在测试中指定数据库
【发布时间】:2014-02-20 14:03:34
【问题描述】:

我想在不更改数据库的情况下运行模型测试。 我正在使用没有进化的mysql数据库。

是否可以为我的测试指定不同的数据库?或者将 mysql 模式复制到内存数据库中?

我尝试制作一个单独的配置并像这样使用它:

play test -Dconfig.resource=application.test.conf

没有利润。

【问题讨论】:

  • 不是-Dconfig.file=application.test.conf吗?

标签: java mysql playframework


【解决方案1】:

您可以在 play 应用程序中使用多个数据库。这里我举三个应用程序中的数据库的例子。(prod,dev,test)

为生产写入 conf 文件(在 conf 目录中)

prod.conf

include "application.conf"

db.default.driver=org.postgresql.Driver                                                                             
db.default.url="jdbc:postgresql://localhost:5432/productiondatabase"  
db.default.user="postgres"
db.default.password="postgres"

为develop编写conf文件

dev.conf

include "application.conf"

db.default.driver=org.postgresql.Driver                                                                             
db.default.url="jdbc:postgresql://localhost:5432/developmentdatabase"
db.default.user="postgres"
db.default.password="postgres"

为测试编写配置文件

test.conf

include "application.conf"

db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:test"
db.default.user=sa
db.default.password=""

现在写 Global.scala(在应用目录中)

import play.api._  
import play.api.Logger  
import com.typesafe.config.ConfigFactory   
import java.io.File 

 object Global extends GlobalSettings {    

      override def onLoadConfig(config: Configuration, path: File, classloader:     ClassLoader,mode: Mode.Mode): Configuration = {

    Logger.info("Application  configuration file is loading with " + mode.toString + "  mode")

    val modeSpecificConfig = config ++ Configuration(ConfigFactory.load(s"${mode.toString.toLowerCase}.conf"))
    super.onLoadConfig(modeSpecificConfig, path, classloader, mode)

  }
}

$ play test => 它会自动连接到测试数据库。

$ play run => 它会自动连接到 dev 数据库。

$ play start =>它会自动连接到 prod 数据库。

【讨论】:

  • 如何为我的测试数据库设置架构(从开发人员复制)?
  • 创建数据库模式脚本(从 dev 或根据需要)例如 mysql.sql 和:db.default.url="""jdbc:h2:mem:mysqldb;MODE=MySQL;IGNORECASE= TRUE;INIT=RUNSCRIPT FROM 'scriptdirpath/mysql.sql' """
  • 谢谢。我最终使用了进化。
猜你喜欢
  • 2011-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多