2013-03-04 15 views
9

Sto configurando un progetto usando Play 2 e sono già in grado di eseguire il debug dell'applicazione web utilizzando il debug remoto di eclipse. Tuttavia, mi piacerebbe anche utilizzare i punti di interruzione lungo i miei test. Qualcuno sa come l'unità di installazione verifica il debug remoto?Come eseguire il debug dei test con Play! 2.0

+2

fa questo aiuto? http://stackoverflow.com/questions/10859064/how-to-debug-play-2-unit-test-for-server-side – Behe

+0

No, non lo è. Sto usando il gioco e non lo stack typesafe. –

+0

Hai provato il comando: 'play debug ~ test' – adis

risposta

11

Questo accade perché le forcelle di riproduzione (SBT) separano la JVM per i test, senza le opzioni necessarie per il debug remoto. Hai almeno due opzioni: disabilita il fork della nuova JVM, passa le opzioni aggiuntive alla JVM utilizzata per i test.

Per disabilitare forchetta, modificare Build.scala, aggiungere fork in (Test) := false, osservare le esempio Build.scala di seguito:

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 
) 
} 

Per passare le opzioni aggiuntive, aggiungere è possibile utilizzare questo codice:

val main = play.Project(appName, appVersion, appDependencies).settings(
    Keys.javaOptions in (Test) += 
    "-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9998" 
) 

Sarà necessario configurare l'IDE per utilizzare la porta 9998 da allegare ai test. Inoltre, sarà necessario riattaccare il debugger ogni volta che si eseguono dei test, il che potrebbe risultare inopportuno.

+0

Grazie per la risposta. Non sto più giocando, quindi non so se questa risposta è corretta, né ho tempo di provarla. Se avrà più upvotes, lo contrassegnerò in seguito come accettato. –

+2

Posso confermare che funziona (Riproduzione 2.1.0) – Skyr

+1

un modo migliore è impedire il test al fork come descritto [here] (http://stackoverflow.com/a/16742485/508064). Ciò consente di utilizzare la stessa connessione sia per l'app che per il test e la connessione è aperta mentre la console di gioco è in esecuzione, quindi non è necessario ricollegare il debugger. – roterl

0

ho utilizzare Eclipse o meglio Scala ide

invece di correre "giocare" corro questo comando "gioco debug" poi il gioco doveva stampare questo messaggio:

Listening for transport dt_socket at address: 9999 

il $ pronta normale per il gioco apparirebbe. quindi immettere il comando "run"

da Eclipse, ho impostato il punto di interruzione e fare clic su "Esegui -> Debug configurazioni ..." look per "Java Remote Application" a sinistra e fare clic su "Launch Nuova configurazione" (l'icona piccola, in alto a sinistra, appare come un'icona 'nuovo documento'). la porta predefinita sarebbe 8000, cambiarla in 9999 e cambiare la macchina, molto probabilmente si utilizzerebbe localhost. e fare clic sul pulsante [Debug]

che dovrebbe farlo. carica il normale http://localhost:9000 sul tuo browser aspetta che l'applicazione raggiunga il punto di interruzione.

+2

questo non aiuta con il test di unità di debug, però, sarebbe stata una soluzione utile se fosse per il debug remoto un'applicazione gioco – Stowelly

+0

mi ha aiutato :) – JustGoscha

0

Disattivando il fork e l'esecuzione parallela nell'ambiente di test, è possibile eseguire il debug dei test. Solo si dovrebbe aggiungere questi fine righe del file build.sbt:

parallelExecution in Test := false 
fork in Test := false 
Problemi correlati