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