2012-01-04 14 views
9

Sto scrivendo alcuni test per il codice Javascript e ho bisogno di scaricare alcuni messaggi durante il processo di compilazione quando si incontrano errori.Qual è l'equivalente di System.out.println() di Java in Javascript?

Esiste un equivalente di Java System.out.println() in Javascript?

P.S.: Devo anche eseguire il dump delle dichiarazioni di debug durante l'implementazione dei test.

UPDATE

Sto usando un plugin Maven su un file che contiene tutti i test fusi:

 <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>exec-maven-plugin</artifactId> 
      <version>1.1</version> 
      <executions> 
       <execution> 
       <phase>test</phase> 
       <goals> 
        <goal>java</goal> 
       </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <mainClass>org.mozilla.javascript.tools.shell.Main</mainClass> 
       <arguments> 
        <argument>-opt</argument> 
        <argument>-1</argument> 
        <argument>${basedir}/src/main/webapp/html/js/test/test.js</argument> 
       </arguments> 
      </configuration> 
     </plugin> 

UPDATE II

ho provato console.log("..."), ma ottengo:

js: "src/main/webapp/html/js/concat/tests_all.js", line 147: 
uncaught JavaScript runtime exception: ReferenceError: "console" is not defined 

Il codice che sto testando è un insieme di funzioni (come in una libreria). Sto usando QUnit.

risposta

17

Sostanzialmente console.log("Put a message here.") se il browser dispone di una console di supporto.

Un altro metodo tipico di debugging sta usando avvisi, alert("Put a message here.")

RE: Aggiornamento II

Questo sembra avere un senso, si sta tentando di automatizzare i test QUnit, da quello che ho letto su QUnit questo è una suite/libreria di test dell'unità interna. QUnit si aspetta di essere eseguito in un browser e quindi si aspetta che il browser riconosca tutte le funzioni JavaScript che stai chiamando.

In base alla configurazione di Maven, sembra che si stia utilizzando Rhino per eseguire Javascript nella riga di comando/terminale. Questo non funzionerà per testare le specifiche del browser, probabilmente dovresti cercare in questo il Selenium. Se non ti interessa testare il tuo JavaScript in un browser ma stai solo testando JavaScript a livello di riga di comando (per ragioni che non avrei familiarità con), Rhino riconosce un metodo print() per valutare espressioni e stamparle. Cassa this documentation.

Questi collegamenti potrebbero interessarti.

QUnit and Automated Testing

JavaScript Unit Tests with QUnit

+2

Se il browser non ha una 'console', allora è un browser schifoso (per il debug). –

+3

@Rocket Sarei d'accordo, si spera che la maggior parte di quelli non esistano più ma prima era sicuramente un problema. Inoltre quei browser schifosi erano quelli su cui dovevi fare il maggior debugging! –

+2

So che IE non avrebbe un oggetto 'console' a meno che non abbiate aperto gli strumenti di debug, quindi l'avrebbe aggiunto. Ma questo perché IE è stupido. –

2

console.log().

Chrome, Safari e IE 8+ sono dotati di console integrate (come parte di un più ampio set di strumenti di sviluppo). Se utilizzi Firefox, getfirebug.com.

+0

correlati (lotti): http://stackoverflow.com/search?q=javascript+console.log –

+0

ho provato la soluzione proposta, ma non ha funzionato. Ho aggiornato la mia domanda. – JVerstry

0

Non c'è una sola, almeno, a meno che non si sta utilizzando uno strumento di "developer" di qualche tipo nel browser, ad esempio, Firebug in Firefox o gli strumenti per sviluppatori in Safari. Quindi di solito è possibile utilizzare console.log.

Se sto facendo qualcosa in, per esempio, un dispositivo iOS, potrei aggiungere un <div id="debug" /> e quindi accedere ad esso.

+2

Buona strategia, i dispositivi iOS hanno una console, abilitarlo tramite Impostazioni> Safari> Avanzate> Console di debug –

+0

Cool beans @ChrisWagner, non lo sapevo! –

0

È sempre possibile aggiungere semplicemente un prompt di avviso() in qualsiasi punto di una funzione. Particolarmente utile per sapere se una funzione è stata chiamata, se una funzione è stata completata o dove una funzione ha esito negativo.

alert('start of function x'); 
alert('end of function y'); 
alert('about to call function a'); 
alert('returned from function b'); 

Si ottiene l'idea.

+0

Sì, potrebbe funzionare, ma quando si esegue il processo di compilazione più volte, dovrei chiudere ogni avviso -> Un po 'poco pratico per me ... – JVerstry

+0

a destra - Posso vedere dove sarebbe un po' poco pratico.Ho usato FireBug un po ', sembra che abbia quello che stai cercando http://getfirebug.com/logging – jamesTheProgrammer

3

ho trovato una soluzione:

print("My message here"); 
-1

Sono inoltre in procinto di fare la stessa domanda. Ma da quello che ho imparato da codeacademy.com sotto il codice è sufficiente visualizzare l'output o il testo?

print("hello world") 
3

sto usando Chrome e print() stamperà letteralmente il testo su carta. Questo è ciò che funziona per me:

document.write("My message"); 
Problemi correlati