Question

I have a set of test cases that I want to debug (step by step, reading values, etc.). How can I setup my sbt build so that I can hookup an eclipse debugger?

Was it helpful?

Solution

I found a way to attach the Eclipse debugger. To the Build.scala project settings I add the following options:

//required for the javaOptions to be passed in
fork := true

javaOptions in (Test) += "-Xdebug"

javaOptions in (Test) += "-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"

Then in Eclipse I can create a new Debug configuration (arrow next to the bug icon) of type Remote Java Application. There I can select Scala debugger (Socket Attach) and specify the port 5005.

Problem I now have is that I cannot set any breakpoints, but that's another question and might be related to the version of Scala IDE that I use.

Edit

Problems with setting the breakpoint had (most likely) something to do with the exotic constructions in my specs2 specification. I created a small object with a method in order to be able to set a breakpoint

object BreakPoint { 
  def set = {}
}

OTHER TIPS

Using the Scala debugger through the remote connector works.

But if you want to avoid to go back and forth between sbt and Eclipse, you can load your project in Scala IDE using sbteclipse, and then run your specs2 tests from inside Scala IDE, in debug mode, using the JUnit launcher.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top