【问题标题】:How to debug tests with Play! 2.0如何使用 Play 调试测试! 2.0
【发布时间】:2017-04-11 21:33:55
【问题描述】:

我正在使用 Play 2 设置一个项目,并且我已经能够使用 Eclipse 远程调试来调试 webapp。不过,我也想在我的测试中使用断点。有谁知道如何设置单元测试的远程调试?

【问题讨论】:

  • 不,它没有。我正在使用 play 而不是类型安全堆栈。
  • 你试过命令吗:play debug ~test
  • @PedroMorteRolo 实际上,即使您没有使用 Typesafe 堆栈,游戏控制台仍然是 SBT 的。所以 SBT_OTPS 应该可以解决问题

标签: eclipse junit playframework playframework-2.0 jpda


【解决方案1】:

发生这种情况是因为 Play (SBT) 为测试分叉了单独的 JVM,而没有远程调试所需的选项。您至少有两个选择:禁用新 JVM 的 fork,将其他选项传递给用于测试的 JVM。

要禁用 fork,请修改 Build.scala,添加 fork in (Test) := false,请参阅下面的完整 Build.scala 示例:

import sbt._
import play.Project._

object ApplicationBuild extends Build {

  val appName         = "so1"
  val appVersion      = "1.0-SNAPSHOT"

  val appDependencies = Seq(
    // Add your project dependencies here,
    javaCore,
    javaJdbc,
    javaEbean
  )

  val main = play.Project(appName, appVersion, appDependencies).settings(
    // Add your own project settings here
    Keys.fork in (Test) := false
  )
}

要传递其他选项,请添加您可以使用此代码:

  val main = play.Project(appName, appVersion, appDependencies).settings(
    Keys.javaOptions in (Test) += 
    "-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9998"
  )

您需要将 IDE 配置为使用端口 9998 来附加到测试。 此外,每次运行测试时都需要重新附加调试器,这可能很不方便。

【讨论】:

  • 感谢您的回答。我不再使用 play,所以我不知道这个答案是否正确,也没有时间尝试。如果它会有更多的赞成票,我稍后会将其标记为已接受。
  • 更好的方法是防止测试分叉,如here 所述。这允许您为应用程序和测试使用相同的连接,并且在播放控制台运行时连接是打开的,因此不需要重新连接调试器。
【解决方案2】:

我使用日食 或者更确切地说是scala ide

而不是运行“播放” 我运行这个命令“播放调试” 然后 play 将打印此消息:

Listening for transport dt_socket at address: 9999

会出现正常的 $ 播放提示。 然后输入这个命令“运行”

从 Eclipse 中,我设置断点并单击“运行 -> 调试配置...” 在左侧查找“远程 Java 应用程序”,然后单击“启动新配置”(左上角的小图标,看起来像一个“新文档”图标)。 默认端口为 8000,将其更改为 9999 并更改机器,很可能您将使用 localhost。 然后点击【调试】按钮

应该这样做。 只需在浏览器上加载普通的http://localhost:9000 只需等待应用程序到达断点即可。

【讨论】:

  • 虽然这对调试单元测试并没有帮助,但如果它是用于远程调试播放应用程序会是一个有用的答案
【解决方案3】:

通过在测试环境中禁用分叉和并行执行,您可以调试测试。 只有您应该将这些行添加到您的 build.sbt 文件的末尾:

parallelExecution in Test := false
fork in Test := false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多