如果我想在启用调试的情况下运行测试(或主要),我发现使用特殊标志重新启动sbt令人难以置信的尴尬。如果main或test通常位于分叉的JVM中,那也很痛苦:
How to set fork in Test when -jvm-debug given on command line?
是否有任何简单方式有条件地执行run
,test
,test-quick
或test-only
并要求启用调试分叉的过程?例如语法如test-only -jdb
我真的不想写自己的Task
来做这件事......维持它们将成为一场噩梦。但我想这会允许像module/jdb:test-only
答案 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:run
,dtest:test
和myproject
。分叉的JVM(注释fork in DebugTest := true
)将使用您提供的debugging options
。
答案 1 :(得分:3)
我认为没有任何简单的功能可以开箱即用。
As you mentioned on sbt-dev list,制作像debug:testOnly
这样的自定义配置听起来像是一个很好的策略。