如何使用 Eclipse 调试由 sbt 驱动的测试?

Posted

技术标签:

【中文标题】如何使用 Eclipse 调试由 sbt 驱动的测试?【英文标题】:How can I use Eclipse to debug tests driven by sbt? 【发布时间】:2013-03-08 20:03:52 【问题描述】:

我有一组要调试的测试用例(逐步、读取值等)。如何设置我的 sbt 构建以便连接 Eclipse 调试器?

【问题讨论】:

【参考方案1】:

我找到了一种附加 Eclipse 调试器的方法。在Build.scala 项目设置中,我添加了以下选项:

//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"

然后在 Eclipse 中,我可以创建一个类型为 Remote Java Application 的新 Debug configuration(错误图标旁边的箭头)。在那里我可以选择Scala debugger (Socket Attach) 并指定端口5005

我现在遇到的问题是我无法设置任何断点,但这是另一个问题,可能与我使用的 Scala IDE 版本有关。

编辑

设置断点的问题(很可能)与我的 specs2 规范中的奇异结构有关。我用一个方法创建了一个小对象,以便能够设置断点

object BreakPoint  
  def set = 

【讨论】:

如果您可以将断点问题简化为可重现的测试用例,我们很想知道:scala-ide.org/docs/community.html 好点,一旦我有时间我会尝试做一个孤立的测试用例 并确保使用最新的 Scala IDE 版本(在撰写本文时,v3.0.0)【参考方案2】:

通过远程连接器使用Scala debugger 有效。

但是如果你想避免在sbtEclipse之间来回切换,你可以使用sbteclipse在Scala IDE中加载你的项目,然后从Scala IDE内部运行你的specs2测试,在调试模式,使用JUnit launcher。

【讨论】:

我用的是sbteclipse,真不错! JUnit 启动器在这里不是一个好的选择,因为我使用的 Auto Examples 超过了一行。

以上是关于如何使用 Eclipse 调试由 sbt 驱动的测试?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 sbt-eclipse 创建项目的 Eclipse 项目文件?

如何安装 sbt-eclipse 插件?

如何让 Eclipse 识别来自 SBT 的依赖项

使用eclipse进行断点调试进入断点的速度很慢,可能由哪些原因造成,求大神指教

如何在 SBT Scala 项目中使用 MySQL JDBC 驱动程序?

用eclipse调试scala工程代码