如何使用单独的配置文件在 CI 中使用 Play 和 sbt 进行测试?
How to use a separate configuration file for tests in CI, using Play and sbt?
对于一个基于 Play with sbt 的项目,我希望使用不同的配置文件为测试 运行 提供多种风格。动机是能够 运行 针对本地或远程数据库进行测试。
已经有一个为一般测试指定的自定义配置文件 运行s(在 build.sbt 中):
javaOptions in Test += "-Dconfig.file=conf/application.test.conf"
现在我想要另一个命令,其中相同的测试 运行 针对某些配置文件 conf/application.test-ci.conf
。
到目前为止尝试过的方法
添加命令别名
addCommandAlias("test-ci", ";test -Dconfig.file=conf/application.test-ci.conf")
这失败并显示缺少分号的错误消息 (;
),表明 sbt 将生成的命令行解释为多个命令,但我不明白为什么。
延长Test
lazy val CITest = config("ci") extend Test
lazy val config = (project in file(".")).enablePlugins(PlayScala)
.configs(CITest)
.settings(inConfig(CITest)(Defaults.testTasks): _*)
.settings(
javaOptions in CITest += "-Dconfig.file=conf/application.test-ci.conf"
)
javaOptions in CITest -= "-Dconfig.file=conf/application.test.conf"
我不完全明白这是在做什么,但它似乎总是选择另一个测试配置文件。
如何指定多个测试设置以获取不同的配置文件?
首先尝试通过 set
命令应用设置,然后像这样 test
执行后续任务
addCommandAlias(
"test-ci",
""";set Test/javaOptions ++= Seq("-Dconfig.file=conf/application.test.con"); test"""
)
注意 ;
如何将 set
与 test
分开。
另一种方法是根据环境修改设置。通常在 CI 上设置了一些环境变量,如 CI
或 BUILD
,因此您可以有条件地修改 javaOptions
(无需任何自定义配置):
Test/javaOptions ++= {
if (sys.env.get("CI").isEmpty) Seq.empty
else Seq("-Dconfig.file=conf/application.test-ci.conf")
}
注意:Test/javaOptions
是 javaOptions in Test
的新语法(自 sbt 1 起)
对于一个基于 Play with sbt 的项目,我希望使用不同的配置文件为测试 运行 提供多种风格。动机是能够 运行 针对本地或远程数据库进行测试。
已经有一个为一般测试指定的自定义配置文件 运行s(在 build.sbt 中):
javaOptions in Test += "-Dconfig.file=conf/application.test.conf"
现在我想要另一个命令,其中相同的测试 运行 针对某些配置文件 conf/application.test-ci.conf
。
到目前为止尝试过的方法
添加命令别名
addCommandAlias("test-ci", ";test -Dconfig.file=conf/application.test-ci.conf")
这失败并显示缺少分号的错误消息 (;
),表明 sbt 将生成的命令行解释为多个命令,但我不明白为什么。
延长Test
lazy val CITest = config("ci") extend Test
lazy val config = (project in file(".")).enablePlugins(PlayScala)
.configs(CITest)
.settings(inConfig(CITest)(Defaults.testTasks): _*)
.settings(
javaOptions in CITest += "-Dconfig.file=conf/application.test-ci.conf"
)
javaOptions in CITest -= "-Dconfig.file=conf/application.test.conf"
我不完全明白这是在做什么,但它似乎总是选择另一个测试配置文件。
如何指定多个测试设置以获取不同的配置文件?
首先尝试通过 set
命令应用设置,然后像这样 test
执行后续任务
addCommandAlias(
"test-ci",
""";set Test/javaOptions ++= Seq("-Dconfig.file=conf/application.test.con"); test"""
)
注意 ;
如何将 set
与 test
分开。
另一种方法是根据环境修改设置。通常在 CI 上设置了一些环境变量,如 CI
或 BUILD
,因此您可以有条件地修改 javaOptions
(无需任何自定义配置):
Test/javaOptions ++= {
if (sys.env.get("CI").isEmpty) Seq.empty
else Seq("-Dconfig.file=conf/application.test-ci.conf")
}
注意:Test/javaOptions
是 javaOptions in Test
的新语法(自 sbt 1 起)