Как запустить тесты sbt для отладки, Когда debug отключен по умолчанию?

мне невероятно неудобно перезапускать sbt со специальными флагами, если я хочу запустить тесты (или основной) с включенной отладкой. Это также боль, если основной или тест обычно находится в раздвоенной JVM:

Как установить вилку в тесте, когда-JVM-debug задан в командной строке?

есть простой способ условно сделать run, test, test-quick или test-only и попросите включить отладку в раздвоенном процессе? например, с синтаксис как test-only -jdb

Я действительно не хочу писать свой собственный Tasks, чтобы сделать это... поддержание их будет кошмаром. Но я думаю, что это позволит синтаксис, как module/jdb:test-only

2 ответов


Я не думаю, что есть какая-либо простая функция, которая позволяет отлаживать из коробки.

как вы упомянули в списке sbt-dev, делая пользовательскую конфигурацию, как debug:testOnly звучит как хорошая стратегия.


в то время как Евгений точно упоминает, что мы могли бы предоставить 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 on myproject. Раздвоенная JVM (Примечание fork in DebugTest := true) будет использовать все debugging options вы указали.