如何使用Play调试测试! 2.0

时间:2013-03-04 11:57:12

标签: eclipse junit playframework playframework-2.0 jpda

我正在使用Play 2设置项目,我已经能够使用eclipse远程调试来调试webapp。虽然,我也想在我的测试中使用断点。有谁知道设置单元如何测试'远程调试?

3 个答案:

答案 0 :(得分:11)

这种情况正在发生,因为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附加到测试。 此外,每次运行测试时都需要重新连接调试器,这可能很不方便。

答案 1 :(得分:0)

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

而不是跑“玩” 我运行此命令“play debug” 然后播放将打印此消息:

Listening for transport dt_socket at address: 9999

将出现正常的$ play提示。 然后输入此命令“run”

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

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

答案 2 :(得分:0)

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

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