18

我正在为 Javascript 代码编写一些测试,当遇到错误时,我需要在编译过程中转储一些消息。

System.out.println()Javascript中是否有与Java等效的东西?

PS:我还需要在实现测试时转储调试语句。

更新

我在包含所有合并测试的文件上使用 maven 插件:

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

更新二

我试过了console.log("..."),但我得到:

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

我正在测试的代码是一组函数(如在库中)。我正在使用 QUnit。

4

8 回答 8

29

本质上console.log("Put a message here."),如果浏览器有一个支持控制台。

另一种典型的调试方法是使用警报,alert("Put a message here.")

回复:更新二

这似乎是有道理的,您正在尝试自动化 QUnit 测试,从我在 QUnit 上读到的内容来看,这是一个浏览器内单元测试套件/库。QUnit 期望在浏览器中运行,因此期望浏览器能够识别您正在调用的所有 JavaScript 函数。

根据您的 Maven 配置,您似乎正在使用 Rhino 在命令行/终端执行 Javascript。这不适用于测试浏览器的细节,您可能需要为此查看 Selenium。如果您不关心在浏览器中测试您的 JavaScript,而只是在命令行级别测试 JavaScript(由于我不熟悉的原因),那么 Rhino 似乎识别出print()一种评估表达式并将其打印出来的方法。查看此文档

您可能对这些链接感兴趣。

QUnit 和自动化测试

使用 QUnit 进行 JavaScript 单元测试

于 2012-01-04T20:01:04.860 回答
4

我找到了一个解决方案:

print("My message here");
于 2012-01-04T20:21:45.530 回答
4

我正在使用 Chrome 和print()从字面上打印纸上的文字。这对我有用:

document.write("My message");
于 2013-09-23T07:19:55.967 回答
2

console.log().

Chrome、Safari 和 IE 8+ 带有内置控制台(作为更大的开发工具集的一部分)。如果您使用的是 Firefox,请访问 getfirebug.com

于 2012-01-04T20:00:49.973 回答
0

至少没有,除非您在浏览器中使用某种“开发者”工具,例如 Firefox 中的 Firebug 或 Safari 中的开发者工具。然后你通常可以使用console.log.

如果我在 iOS 设备上做某事,我可能会添加一个<div id="debug" />然后登录到它。

于 2012-01-04T20:02:34.933 回答
0

您始终可以在函数的任何位置简单地添加 alert() 提示。对于了解是否调用了函数、函数是否完成或函数失败的位置特别有用。

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

你明白了。

于 2012-01-04T20:18:43.370 回答
0

我也准备问同样的问题。但是从我从 codeacademy.com 学到的以下代码足以显​​示输出或文本?

print("hello world")  
于 2012-01-05T21:51:36.363 回答
0

在javaSystem.out.println()中打印一些东西来控制台。在 javascript 中也可以使用console.log().

您需要通过按F12打开开发工具的键查看浏览器控制台,然后切换到console选项卡。

于 2019-04-09T13:47:56.690 回答