I am writing some tests for Javascript code and I need to dump some messages during the compile process when errors are encountered.
Is there any equivalent to Java's System.out.println()
in Javascript?
P.S.: I also need to dump debug statements while implementing tests.
UPDATE
I am using a maven plugin on a file containing all merged tests:
<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
I tried console.log("...")
, but I get:
js: "src/main/webapp/html/js/concat/tests_all.js", line 147:
uncaught JavaScript runtime exception: ReferenceError: "console" is not defined
The code I am testing is a set of functions (like in a library). I am using QUnit.
This question is related to
java
javascript
compile-time
println
system.out
Essentially console.log("Put a message here.")
if the browser has a supporting console.
Another typical debugging method is using alerts, alert("Put a message here.")
RE: Update II
This seems to make sense, you are trying to automate QUnit tests, from what I have read on QUnit this is an in-browser unit testing suite/library. QUnit expects to run in a browser and therefore expects the browser to recognize all of the JavaScript functions you are calling.
Based on your Maven configuration it appears you are using Rhino to execute your Javascript at the command line/terminal. This is not going to work for testing browser specifics, you would likely need to look into Selenium for this. If you do not care about testing your JavaScript in a browser but are only testing JavaScript at a command line level (for reason I would not be familiar with) it appears that Rhino recognizes a print()
method for evaluating expressions and printing them out. Checkout this documentation.
These links might be of interest to you.
I'm using Chrome and print() literally prints the text on paper. This is what works for me:
document.write("My message");
There isn't one, at least, not unless you are using a "developer" tool of some kind in your browser, e.g. Firebug in Firefox or the Developer tools in Safari. Then you can usually use console.log
.
If I'm doing something in, say, an iOS device, I might add a <div id="debug" />
and then log to it.
In java System.out.println()
prints something to console. In javascript same can be achieved using console.log()
.
You need to view browser console by pressing F12
key which opens developer tool and then switch to console
tab.
You can always simply add an alert() prompt anywhere in a function. Especially useful for knowing if a function was called, if a function completed or where a function fails.
alert('start of function x');
alert('end of function y');
alert('about to call function a');
alert('returned from function b');
You get the idea.
I'm also about to ask the same question. But from what I've learned from codeacademy.com below code is enough to display the output or text?
print("hello world")
I found a solution:
print("My message here");
Chrome, Safari, and IE 8+ come with built-in consoles (as part of a larger set of development tools). If you're using Firefox, getfirebug.com.
Source: Stackoverflow.com