我想暂停分叉的虚拟机,只有在使用IntegrationDebug
配置时才等待来自外部调试器的连接。
参考共享来源' http://www.scala-sbt.org/1.x/docs/Testing.html中的部分,我想出了以下配置:
import sbt.Keys._
lazy val IntegrationDebug = config("itd") extend (IntegrationTest)
val scalaTestV = "3.0.4"
lazy val root = project.in(file("."))
.configs(
IntegrationTest,
IntegrationDebug
)
.settings(
Defaults.itSettings,
inConfig(IntegrationDebug)(Defaults.testTasks),
libraryDependencies ++= Seq(
"org.scalactic" %% "scalactic" % scalaTestV,
"org.scalatest" %% "scalatest" % scalaTestV,
),
fork in IntegrationTest := true,
javaOptions in IntegrationDebug += "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8123",
)
但是,它没有按预期工作:
it:test -> vm not suspended (expected)
itd:test -> vm not suspended (unexpected!!)
如果我将javaOptions
的范围更改为IntegrationTest
,即
...
javaOptions in IntegrationTest += "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8123",
...
然后
it:test -> vm suspended (unexpected!!)
itd:test -> vm suspended (expected)
无论如何都要让它像以下一样工作:
it:test -> vm not suspended
itd:test -> vm suspended
答案 0 :(得分:0)
好的,如果我没有弄错的话,我可能已经找到了问题的解决方案。
更换行:
javaOptions in IntegrationDebug += "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8123",
与
testOptions in IntegrationDebug += Tests.Argument("-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8123")
应该做的伎俩(在这种情况下,VM仅针对itd:test
命令暂停)。
我知道它已经很长时间了,但有人可能会觉得这很有用。我几乎有同样的问题,这就是为我解决的问题。