2012-01-04 15 views
9

Piszę niektóre testy kodu JavaScript i muszę zrzucić niektóre wiadomości podczas procesu kompilacji, gdy napotkane zostaną błędy.Jaki jest odpowiednik Java System.out.println() w JavaScript?

Czy istnieje odpowiednik języka Java System.out.println() w języku Java?

P.S.: Muszę również zrzeknąć instrukcji debugowania podczas wdrażania testów.

UPDATE

Używam plugin maven na plik zawierający wszystkie scalone testy:

 <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

Próbowałem console.log("..."), ale pojawia się:

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

Kod, który testuję, to zestaw funkcji (jak w bibliotece). Używam QUnit.

Odpowiedz

17

Zasadniczo console.log("Put a message here."), jeśli przeglądarka ma konsolę pomocniczą.

Innym typowym sposobem debugowania jest za pomocą alertów alert("Put a message here.")

RE: Aktualizacja II

To wydaje się mieć sens, staramy się zautomatyzować testy QUnit, z tego co czytałem na QUnit to pakiet testowy/biblioteka testowania jednostek w przeglądarce. QUnit spodziewa się uruchomić w przeglądarce i dlatego oczekuje, że przeglądarka rozpozna wszystkie funkcje JavaScript, które wywołujesz.

Na podstawie konfiguracji Maven wygląda na to, że używasz Rhino do wykonania JavaScript w wierszu poleceń/terminalu. To nie zadziała w testowaniu specyfiki przeglądarki, prawdopodobnie będziesz musiał zajrzeć do Selenium. Jeśli nie masz nic przeciwko testowaniu JavaScript w przeglądarce, ale testujesz JavaScript tylko na poziomie wiersza poleceń (z jakiegoś powodu nie byłbym zaznajomiony), wygląda na to, że Rhino rozpoznaje metodę oceniania wyrażeń i drukowania ich na zewnątrz. Zamówienie this documentation.

Te linki mogą Cię zainteresować.

QUnit and Automated Testing

JavaScript Unit Tests with QUnit

+2

Jeśli przeglądarka nie ma 'konsoli', to jest paskudna przeglądarka (do debugowania). –

+3

@Rocket Zgadzam się, mam nadzieję, że większość z nich już nie istnieje, ale wcześniej był to zdecydowanie problem. Co więcej, te brzydkie przeglądarki to te, w których trzeba było najwięcej debugować! –

+2

Wiem, że IE nie miałby obiektu 'console', dopóki nie otworzy się narzędzi do debugowania, a następnie doda go. Ale to dlatego, że IE jest głupi. –

2

console.log().

Chrome, Safari i IE 8+ są dostarczane z wbudowanymi konsolami (jako część większego zestawu narzędzi programistycznych). Jeśli używasz przeglądarki Firefox, getfirebug.com.

+0

pokrewne (dużo): http://stackoverflow.com/search?q=javascript+console.log –

+0

Próbowałem proponowanego rozwiązania, ale to nie działa. Zaktualizowałem moje pytanie. – JVerstry

0

Nie ma jednego, przynajmniej nie, chyba że używasz „Programista” pewnego rodzaju narzędzie w swojej przeglądarce, np Firebug w Firefoksie lub narzędzia programistyczne w Safari. Wtedy zazwyczaj możesz użyć console.log.

Jeśli robię coś w, powiedzmy, urządzenie iOS, mogę dodać <div id="debug" />, a następnie zalogować się do niego.

+2

Dobra strategia, urządzenia z iOS mają konsolę, włączasz ją przez Ustawienia> Safari> Zaawansowane> Debuguj konsolę –

+0

Fajne fasolki @ChrisWagner, tego nie wiedziałem! –

0

Zawsze można po prostu dodać prompt() w dowolnym miejscu w funkcji. Szczególnie przydatny do sprawdzenia, czy funkcja została wywołana, czy funkcja została zakończona lub gdy funkcja zawodzi.

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

Wpadłeś na pomysł.

+0

Tak, to może działać, ale podczas wielokrotnego uruchamiania procesu kompilacji musiałbym zamknąć każdy alert -> Trochę niepraktyczne dla mnie ... – JVerstry

+0

prawe - widzę, gdzie byłoby to trochę niepraktyczne.Użyłem FireBug trochę, wydaje się, że ma to, czego szukasz http://getfirebug.com/logging – jamesTheProgrammer

3

znalazłem rozwiązanie:

print("My message here"); 
-1

Jestem również zamiar zadać to samo pytanie. Ale z tego, czego nauczyłem się z codeacademy.com poniżej kodu, wystarczy wyświetlić wynik lub tekst?

print("hello world") 
3

używam Chrome i print() dosłownie drukuje tekst na papierze. To, co działa dla mnie:

document.write("My message");