如何在Test中指定" fork:= false"来自命令行而不是基于play框架的项目

时间:2017-09-27 16:42:45

标签: scala intellij-idea playframework

为了让问题尽可能短,我只需要知道是否有一种方法可以在启动激活器时直接从命令行将fork设置为false,而不是按照以下方式对其进行硬编码" fork in Test:= false "来自基于Play-framework 2.4的项目中的 build.sbt

__________________以下所有内容均适用于进一步背景___________________

我正在维持"遗产"基于Play框架版本2.4的项目,并一直在尝试配置我的IntelliJ环境以启用单元测试的调试。为了实现这一点,我创建了2个运行配置,第一个在调试模式下启动激活器并将其所有输出管道传输到IntelliJ控制台,第二个将调试器连接到以前启动的jvm。然后,我可以根据激活器的提示自由运行和调试任何测试。

为了让调试器工作,我必须将以下内容添加到build.sbt中:

fork in Test := false

允许使用我的IntelliJ项目设置进行调试,因为我已将其正确配置为采用我的" conf / test-config.conf "在启动激活剂时考虑到。但是,当我只是运行"激活测试"从本机命令行控制台,,fork选项设置为false ,激活器忽略我的 test-config.conf 文件(显然配置为单元测试调整配置),而是加载原始应用配置文件" application.conf "导致我的测试因各种冲突而失败。即使在我的 build.sbt

中使用以下配置,也会发生这种情况
javaOptions in Test += "-Dconfig.file=conf/test-application.conf"

评论" fork in Test:= false "我从本机控制台启动测试时修复了问题(单元测试运行正常),我的IntelliJ启动配置也成功运行测试,但问题是它失去了调试代码的能力,这实际上是整个第一名。

这是我目前使用IntelliJ在调试模式下启动激活器的命令:

java -Dactivator.home=<activator-home-path> -Xms1024m -Xmx1024m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=256m -Dsbt.override.build.repos=true -Dconfig.file=conf/test-application.conf -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9990 -jar <activator-jar-path>

1 个答案:

答案 0 :(得分:-1)

使用 sbt

时,只需使用以下命令即可
sbt "set fork in Test := false" test

对于激活器,您可以尝试以下操作:

将此添加到您的build.sbt:

fork in Test :=  Option(System.getProperty("fork")) match {
  case Some("false") => false
  case _ => true
}

然后再运行以下命令:

activator -Dfork=false test