Nit*_*mer 4 java testing debugging playframework playframework-2.0
尝试调试在Play中失败的测试时遇到问题。
起初,我无法使其达到断点,这是由测试时发生的新JVM分叉导致的,因此我发现我需要添加:
javaOptions in Test ++= Seq(
"-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9998"
)
Run Code Online (Sandbox Code Playgroud)
到build.sbt
文件。
现在,当我启动调试器时(我正在使用IntelliJ),它达到了断点,但问题是它不允许我在开始测试之前启动调试器。
如果我使用play debug
,然后开始播放,并打开插座(9999),然后我就可以开始调试,然后才在剧中控制台启动我的应用程序(使用运行),但我不能做同样的测试..
一旦我使用play test
测试启动,所以我必须在测试开始运行后启动调试器。
有没有办法解决?
谢谢!
我就是这样做的,希望对其他人有帮助。
更改build.sbt或build.scala以删除分支每个测试的默认选项。在(测试)中添加行Keys.fork:= false
val main = play.Project(appName, appVersion, appDependencies).settings(
resolvers += Resolver.sonatypeRepo("snapshots"),
resolvers += Resolver.sonatypeRepo("releases"),
Keys.fork in (Test) := false
)
Run Code Online (Sandbox Code Playgroud)
我使用以下存储为别名的命令开始播放会话(我现在正在使用激活器)。
'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'
Run Code Online (Sandbox Code Playgroud)
这样,您就可以在调试模式下开始播放,并将该构思附加到远程服务器。在intelliJ中,您添加
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9999
Run Code Online (Sandbox Code Playgroud)
并在上述情况下将端口设置为其localhost 9999
我喜欢这样做的原因是您一次启动播放服务器并将ide连接到远程服务器。然后,您可以通过控制台运行测试,它将达到您的断点,而无需重新启动并为每个测试附加ide。
归档时间: |
|
查看次数: |
1367 次 |
最近记录: |