2014-08-29 80 views
2

我通过JVM调试标志到SBT上开始如何远程调试测试?

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9003 

,看到Listening for transport dt_socket at address: 9003上启动。

我在IntelliJ IDEA中使用远程调试配置,它总是报告它已连接 - Connected to the target VM, address: 'localhost:9003', transport: 'socket'

我可以通过IntelliJ调试主要的源代码,但我无法成功地调试我的ScalaTest单元测试。为什么?

+0

这些测试是否可能在'fork:= true'模式下执行?做'show test:fork'并将输出附加到问题中。请参阅http://www.scala-sbt.org/0.13/docs/Forking.html。 – 2014-08-29 15:34:05

+1

显示测试:叉 [信息]虚假 – Barry 2014-08-29 18:09:10

+0

我仍然没有得到这个功能,但我能够在intellij完成这一切。我在里面运行了SBT控制台,然后连接了调试器,然后运行我的测试。令我困惑的是,在上述设置中,我可以将远程调试器附加到非测试代码。 – Barry 2014-08-30 17:16:39

回答

1

的解决方案是使用这些设置容易:

fork in Test := true 
javaOptions in Test := Seq("-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=9003 
") 

要注意的是在JVM被暂停,直到我接一个调试器,使我们有足够的时间来连接调试器。 连接前必须设置断点。