Scala 默认情况下禁用调试时,如何运行sbt测试进行调试?

Scala 默认情况下禁用调试时,如何运行sbt测试进行调试?,scala,debugging,sbt,Scala,Debugging,Sbt,如果我想在启用调试的情况下运行测试(或主测试),我发现必须使用特殊标志重新启动sbt非常尴尬。如果主或测试通常位于分叉的JVM中,这也是一个难题: 是否有任何简单方法可以有条件地执行运行、测试、快速测试或仅测试,并要求在分叉过程中启用调试?e、 g.使用类似仅测试-jdb 我真的不想写我自己的任务s来完成这项任务。。。维护它们将是一场噩梦。但是我想这将允许像module/jdb:testonly这样的语法我不认为有任何简单的特性支持开箱即用的调试 ,进行自定义配置,如debug:testOnl

如果我想在启用调试的情况下运行测试(或主测试),我发现必须使用特殊标志重新启动sbt非常尴尬。如果主或测试通常位于分叉的JVM中,这也是一个难题:

是否有任何简单方法可以有条件地执行
运行
测试
快速测试
仅测试
,并要求在分叉过程中启用调试?e、 g.使用类似
仅测试-jdb


我真的不想写我自己的
任务
s来完成这项任务。。。维护它们将是一场噩梦。但是我想这将允许像
module/jdb:testonly这样的语法

我不认为有任何简单的特性支持开箱即用的调试


,进行自定义配置,如
debug:testOnly
听起来是一个不错的策略。

虽然Eugene准确地提到我们可以提供现成的
debug:testOnly
,但以下内容应该可以帮助您:

val DebugTest = config("dtest") extend Test

lazy val myproject =
  project.configs(DebugTest).
  settings(inConfig(DebugTest)(Defaults.testSettings):_*).
  settings(
    fork in DebugTest := true,
    javaOptions in DebugTest += "debugging options",
    definedTests in DebugTest := (definedTests in Test).value
  )

这应该允许您在
myproject
上执行
dtest:testOnly*
dtest:run
dtest:test
。分叉JVM(注意
fork-in-DebugTest:=true
)将使用您提供的任何
调试选项。

很酷,谢谢!我写了这样的东西,所以这是有意义的。