Ich bin ein Projekt mit Play 2 einrichten und ich bin bereits in der Lage, die Webapp mit Eclipse Remote Debugging zu debuggen. Allerdings würde ich gerne Breakpoints bei meinen Tests verwenden. Weiß jemand, wie das Remote-Debugging der Setup-Einheit getestet wird?Wie Debuggen mit Play! 2.0
Antwort
Dies geschieht seit (SBT) Gabeln für Tests JVM trennen, ohne Optionen für Remote-Debug benötigt. Sie haben mindestens zwei Optionen: Deaktivieren Sie Fork der neuen JVM, übergeben Sie zusätzliche Optionen an JVM, die für Tests verwendet werden.
Gabel zu deaktivieren, ändern Build.scala, fügen fork in (Test) := false
, unter voller Build.scala Beispiel sehen:
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
)
}
zusätzliche Optionen zu übergeben, fügen Sie diesen Code verwenden können:
val main = play.Project(appName, appVersion, appDependencies).settings(
Keys.javaOptions in (Test) +=
"-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9998"
)
Sie müssen Ihre IDE so konfigurieren, dass sie den Port 9998 für Tests verwendet. Außerdem müssen Sie den Debugger jedes Mal neu anfügen, wenn Sie Tests ausführen, was unbequem sein könnte.
Vielen Dank für Ihre Antwort. Ich benutze kein Spiel mehr, also weiß ich nicht, ob diese Antwort richtig ist, noch habe ich Zeit, es zu versuchen. Wenn es mehr Upvotes gibt, werde ich es später als akzeptiert markieren. –
Ich kann bestätigen, dass es funktioniert (Play 2.1.0) – Skyr
ein besserer Weg ist es zu verhindern, dass der Test wie beschrieben [hier] verzweigt (http://stackoverflow.com/a/16742485/508064). Dadurch können Sie die gleiche Verbindung für die App und den Test verwenden und die Verbindung ist geöffnet, während die Spielkonsole ausgeführt wird, so dass Sie den Debugger nicht erneut anfügen müssen. – roterl
Ich benutze Eclipse oder eher scala ide
statt laufen "spielen" i diesen Befehl "play debug" dann würde drucken spielen diese Meldung:
Listening for transport dt_socket at address: 9999
die normale $ prompt zum Spielen würde erscheinen. dann diesen Befehl „run“
von Eclipse eingeben, i den Haltepunkt gesetzt und dann auf „Ausführen -> Debug-Konfigurationen ...“ Look für „Remote Java Application“ auf der linken Seite und klicken Sie auf „Neue Konfiguration starten“ (kleines Symbol, oben links, sieht wie ein "neues Dokument" -Symbol aus. der Standard-Port wäre 8000, ändern Sie es auf 9999 und ändern Sie die Maschine, höchstwahrscheinlich würden Sie localhost verwenden. und klicken Sie auf den [Debug] -Taste
, die es tun sollte. laden Sie einfach die normale http://localhost:9000
in Ihrem Browser warten Sie einfach, bis die Anwendung den Haltepunkt erreicht.
Dies hilft nicht wirklich mit Debugging Unit Tests obwohl, wäre eine nützliche Antwort gewesen, wenn es für Remote-Debugging eine Play-App war – Stowelly
half mir :) – JustGoscha
Durch Deaktivieren von fork und paralleles Ausführen in der Testumgebung können Sie Tests debuggen. Nur sollten Sie diese Zeilen Ende Ihrer build.sbt
Datei hinzufügen:
parallelExecution in Test := false
fork in Test := false
hilft das? http://stackoverflow.com/questions/10859064/how-to-debug-play-2-unit-test-for-server-side – Behe
Nein, tut es nicht. Ich benutze Spiel und nicht den typsicheren Stapel. –
Haben Sie versucht, Befehl: 'play debug ~ test' – adis