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

时间:2014-11-10 19:30:27

标签: scala debugging sbt

如果我想在启用调试的情况下运行测试(或主要),我发现使用特殊标志重新启动sbt令人难以置信的尴尬。如果main或test通常位于分叉的JVM中,那也很痛苦:

How to set fork in Test when -jvm-debug given on command line?

是否有任何简单方式有条件地执行runtesttest-quicktest-only并要求启用调试分叉的过程?例如语法如test-only -jdb

我真的不想写自己的Task来做这件事......维持它们将成为一场噩梦。但我想这会允许像module/jdb:test-only

这样的语法

2 个答案:

答案 0 :(得分:4)

虽然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
  )

这应该允许您在dtest:testOnly *上执行dtest:rundtest:testmyproject。分叉的JVM(注释fork in DebugTest := true)将使用您提供的debugging options

答案 1 :(得分:3)

我认为没有任何简单的功能可以开箱即用。

As you mentioned on sbt-dev list,制作像debug:testOnly这样的自定义配置听起来像是一个很好的策略。