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

8
我觉得如果我想要在调试模式下运行测试(或主函数),就必须使用特殊标志重新启动sbt,这让我感到非常尴尬。如果主函数或测试通常在分叉的JVM中运行,则更加麻烦: 如何在命令行上输入“-jvm-debug”时设置Test中的fork? 是否有任何简单的方法,在分叉的进程中有条件地执行runtesttest-quicktest-only并请求启用调试?例如,使用像test-only -jdb这样的语法。
我真的不想编写自己的Task来完成这个任务……维护它们将是一场噩梦。但我想这将允许像module/jdb:test-only这样的语法。
2个回答

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
  )

这将使你能够在myproject上执行dtest:testOnly *dtest:rundtest:test。分叉的JVM(请注意,fork in DebugTest:=true)将使用提供的任何debugging options。请注意保留HTML标记。

酷,谢谢!我在 https://github.com/fommil/lions-share/blob/master/sbt/src/main/scala/LionPlugin.scala 写了类似这样的东西,所以这很有意义。 - fommil

3
我认为没有任何简单的功能可以直接启用调试。
正如您在sbt-dev列表中提到的(链接),创建一个自定义配置,例如debug:testOnly听起来是一个不错的策略。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接