【问题标题】:How to run sbt tests for debugging when debug is disabled by default?默认情况下禁用调试时如何运行 sbt 测试进行调试?
【发布时间】:2015-01-07 05:03:52
【问题描述】:

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

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

是否有任何简单方法可以有条件地执行runtesttest-quicktest-only 并要求在分叉进程中启用调试?例如语法类似于test-only -jdb

我真的不想写我自己的Tasks 来做到这一点......维护它们将是一场噩梦。但我想这将允许像module/jdb:test-only这样的语法

【问题讨论】:

    标签: scala debugging sbt


    【解决方案1】:

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

    【讨论】:

    【解决方案2】:

    我认为没有任何简单的功能可以开箱即用地进行调试。

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

    【讨论】:

      猜你喜欢
      • 2012-06-18
      • 2015-03-17
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 2021-06-30
      • 2012-07-30
      • 2011-11-09
      • 2012-03-07
      相关资源
      最近更新 更多