2014-05-07 14 views
8

Sto usando Java nel framework Play e ho alcuni test (test funzionali) che vengono passati quando li eseguo tramite il mio IDE (IntelliJ) ma non riesco a eseguire i test tramite console.Come modificare le impostazioni di "test" di Play Framework 2 per mostrare gli stacktraces completi?

I miei problemi sono che le tracce di stack mostrate nei log di test sono solo 2 righe e ho bisogno della traccia di stack completa per vedere cosa sta succedendo lì, ho provato qualsiasi combinazione di impostazioni menzionata qui: spec2 settings inserendoli in build.sbt o fornendoli nella riga di comando. Sembra che non ci sia alcun effetto! Qui è la mia build.sbt:


version := "1.0-SNAPSHOT" 

libraryDependencies ++= Seq(
    javaJdbc, 
    javaEbean, 
    cache, 
    filters 
)  

logBuffered in Test := false 

testOptions += Tests.Argument(TestFrameworks.JUnit, "-v") 

testOptions += Tests.Argument("fullStackTrace","true") 

traceLevel := 50 

Qualcuno mi può aiutare per favore? Sto usando l'attivatore Typesafe (riproduzione 2.2.2). Grazie

risposta

12

In gioco 2.3.2 questo può essere acheieved utilizzando l'opzione -a in build.sbt:

testOptions += Tests.Argument(TestFrameworks.JUnit, "-a") 

io uso:

testOptions += Tests.Argument(TestFrameworks.JUnit, "-v", "-q", "-a") 

come questo fornisce test è iniziato/messaggi finiti (-v) e sopprime la registrazione per p test di valutazione (-q).


Tutte le opzioni disponibili si possono trovare nella SBT JUnit Interface:

  • -v Log "Test Run iniziato"/"Test preliminari"/"test run finiti" gli eventi a livello di log "info" invece di "debug".
  • -q Sopprime stdout per test positivi. Stderr viene stampato normalmente sulla console. Lo stdout viene scritto su un buffer e scartato quando un test ha esito positivo. Se fallisce, il buffer viene scaricato nella console. Poiché il reindirizzamento stdio in Java è un cattivo kludge (System.setOut() modifica il campo finale statico System.out tramite codice nativo), questo potrebbe non funzionare per tutti gli scenari. Scala ha la sua console con una funzione di ridondanza sana. Se Scala viene rilevato sul percorso della classe, junit-interface tenta di reindirizzare anche lo stdout di scala.Console.
  • -n Non utilizzare i colori ANSI nell'output anche se sbt segnala di essere supportati.
  • -s Provare a decodificare i nomi Scala nelle tracce dello stack e nei nomi dei test. Tornare indietro silenziosamente ai nomi non decodificati se nessuna libreria Scala corrispondente si trova sul percorso della classe.
  • -a Mostra tracce dello stack e nome classe di eccezioni per AssertionErrors (generato da tutti i metodi assert * in JUnit). Senza questa opzione, le asserzioni non riuscite non stampano una traccia dello stack o il prefisso "java.lang.AssertionError:".
  • -c Non stampare il prefisso del nome della classe di eccezioni per alcun messaggio. Con questa opzione, viene mostrato solo il risultato di getMessage() più una traccia dello stack.
  • +v Disattiva -v. Ha la precedenza su -v.
  • +q Disattiva -q. Ha la precedenza su -q.
  • +n Disattiva -n. Ha la precedenza su -n.
  • +s Disattiva-s. Ha la precedenza su -s.
  • +a Disattiva -a. Ha la precedenza su -a.
  • +c Disattiva -c. Ha la precedenza su -c.
  • --ignore-runners=<COMMA-SEPARATED-STRINGS> Ignora i test con un'annotazione @RunWith se il nome della classe Runner è contenuto in questo elenco. Il valore predefinito è org.junit.runners.Suite.
  • --tests=<REGEXPS> Eseguire solo i test i cui nomi corrispondono a una delle espressioni regolari specificate (in un elenco separato da virgole). I test non corrispondenti vengono ignorati. Solo i nomi dei singoli casi di test sono abbinati, non le classi di test. Esempio: per test MyClassTest.testBasic() viene eseguito solo "testBasic". Utilizzare invece il comando di prova di sbt per abbinare le classi di test.
  • -Dkey=value Imposta temporaneamente una proprietà di sistema per la durata dell'esecuzione del test. La proprietà viene ripristinata sul valore precedente al termine del test. Si noti che le proprietà di sistema sono globali per l'intera JVM e possono essere modificate in modo non transazionale, quindi è necessario eseguire test in serie e non eseguire altre attività in parallelo che dipendono dalla proprietà modificata.
  • --run-listener=<CLASS_NAME> Una classe (definita dall'utente) che estende org.junit.runner.notification.RunListener. Un'istanza di questa classe viene creata e aggiunta a JUnit Runner, in modo che possa ricevere gli eventi di esecuzione. Per ulteriori informazioni, vedere RunListener. Nota: utilizza il test-classloader, quindi la classe deve essere definita in src/test o src/main o inclusa come dipendenza test o compilazione
  • --include-categories=<CLASSES> Un elenco separato da virgole di nomi di classi di categoria che devono essere inclusi. Verranno eseguiti solo test con una o più di queste categorie.
  • --exclude-categories=<CLASSES> Un elenco separato da virgole di nomi di classi di categorie da escludere. Non verranno eseguiti test che corrispondono a una o più di queste categorie.
+0

Con ScalaTest, usare 'testOptions + = Tests.Argument (TestFrameworks.ScalaTest, "-di")' – JulienD

+0

Con Specs2, utilizzare 'testOptions + = Tests.Argument (TestFrameworks.Specs2, "failtrace")' –

Problemi correlati