java - 正在运行的调试测试

标签 java debugging testing playframework playframework-2.0

我在尝试调试在 Play 中失败的测试时遇到问题。

一开始我没法让它打断点,结果是测试时 fork 了一个新的JVM导致的,所以我发现我需要添加:

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

build.sbt 文件。

现在它在我启动调试器时遇到了断点(我使用的是 IntelliJ),但问题是它不允许我在开始测试之前启动调试器。

如果我使用 play debug 然后开始 Play 并打开套接字 (9999) 然后我可以启动调试器然后在 Play 控制台中启动我的应用程序(使用运行),但我可以'对测试做同样的事情..
一旦我使用 play test 测试就会开始,所以我必须在测试开始运行后启动调试器。

有什么办法解决这个问题吗?
谢谢!

最佳答案

我就是这样做的,希望对其他人有所帮助。

更改 build.sbt 或 build.scala 以删除 fork 每个测试的默认选项。添加行 Keys.fork in (Test) := false

val main = play.Project(appName, appVersion, appDependencies).settings(
  resolvers += Resolver.sonatypeRepo("snapshots"),
    resolvers += Resolver.sonatypeRepo("releases"),
    Keys.fork in (Test) := false
)

我使用以下命令开始我的游戏 session (我现在正在使用激活器),我将其存储为别名。

'JAVA_HOME=`/usr/libexec/java_home -v 1.7`; JAVA_OPTS="-Xms1g -Xloggc:gc.log -verbose:gc -XX:+PrintGCDateStamps -server -Xmx2g -Dhttps.port=9443" activator -jvm-debug 9999'

这样您就可以在 Debug模式下开始游戏并将想法附加到远程服务器。在 intelliJ 中你添加

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9999

并在上面的例子中设置端口 localhost 9999

我喜欢这样做的原因是您启动 Play 服务器一次并将 ide 附加到远程服务器。然后您可以通过控制台运行测试,它会命中您的断点,无需重新启动并为每个测试附加 ide。

关于java - 正在运行的调试测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23390237/

相关文章:

javascript - 如何将 QUnit 测试集成到 Yii 中

Android 测试发布版本

java - 对涉及 azure ad b2c 的安全 REST API 进行基于角色的访问

java - 为什么扫描仪不会在末尾没有/的情况下获取我的年份变量?

java - 如何从Hbase加载最新的100行到Spark

debugging - 仅在liteIDE(golang)中调试一个功能

perl - 如何使用 'perl -d' 在特定文件中设置断点

java - 如何将 GUI 组件放入 OpenGL 屏幕中

java - Eclipse 调试器 toString() 调用

ios - 如何在开始/完成 iOS 测试时运行/终止 shell 命令?