69

我通过 jasmine-maven-plugin 使用 Jasmine,我想在 Maven 构建输出中看到 console.log() 消息。有没有办法做到这一点?

如果无法重定向 console.log(),是否有任何其他方法可以从我的测试中记录日志,以便它们显示在 Maven 构建输出中?

我正在以无头方式在 Jenkins 上运行这些测试,并且想要一种从测试中获得一些调试输出的方法。

4

8 回答 8

58

尝试

console.info('foo')

从测试javascripts。

于 2015-04-01T10:41:58.673 回答
41

茉莉花 1.x

您可以使用:

jasmine.log("I've got a big log.");

茉莉花 2+

console.log根据douglas-treadwell下面的评论,直接使用。

于 2013-03-08T17:00:17.893 回答
12

如果您在节点环境中运行。你可以使用

process.stdout.write("this will be send to the console");
于 2016-09-14T14:59:51.057 回答
4

我认为这是不可能的

我不得不覆盖规范加载器中的 console.log 实现。即(使用jQuery)

var console = {
    panel: $('body').append('<div>').css({position:'fixed', top:0, right:0,background:'transparent'}),
    log: function(m){
        this.panel.prepend('<div>'+m+'</div>');
    }       

};
        console.log('message 1');
        console.log('message 2');

​这里 有一个功能示例

于 2012-06-15T12:12:13.883 回答
4

If you're desperate for any output in a Terminal window so you can have data to review after the test has completed and the browser has closed, console.error() seems to do the trick.

于 2017-01-26T00:30:10.650 回答
3

使用 grunt/karma/jasmine (karma-jasmine 0.2.2) 遇到同样的问题 -

按照 Dave Sag 的说法,我发现console.log我正在测试的代码中的所有消息都运行良好,但是我的describe() {}it() {}块中没有任何内容记录任何内容。

确实发现您可以从一个beforeEach() {}块中登录。至少它对我有用:

beforeEach(function() {
  this.model = new blahModel();
  console.log('this.model = ', this.model);
});

请注意,这只会登录浏览器控制台,并且由于某种原因不会登录命令行。当来自测试代码块的 console.log 语句在命令行中登录时有点奇怪。我还发现这里似乎是一种更好的一致日志记录方法。

更新:我实际上也看到了它的日志记录工作块,我相信我有其他错误阻止了这一点。

于 2014-12-15T16:07:02.157 回答
3

我正在使用jasmine 2viaguard并且phantom js发现console.log测试中的标准消息可以很好地输出到 jasmine spec runner 的控制台。

我还发现,console.log我正在测试的 javascript 代码元素中的消息确实会被写入,stdout但不会写入console.log测试本身中的消息。

于 2014-03-25T01:35:25.093 回答
2

1) 转到您拥有 pom.xml 的项目目录。在 cmd 中运行以下命令。mvn 茉莉花:bdd

2)您将获得 localhost URL:localhost:8234(只是一个示例)。

3) 在浏览器中运行此 URL。现在你所有的测试用例都被执行了。

4)做这个页面的检查元素。在浏览器控制台中,您将能够看到所有 console.log() 或 console.error() 跟踪。

于 2018-07-16T15:46:43.757 回答