nodej上的Jasmine&jasmine-reporter缺less输出

我有一些Jasmineunit testing,正在用nodejstesting它们。 使用nodejs 0.10.31,jasmine-npm 2.2.1和jasmine-reporter 2.0.5

testing运行,但我没有通过茉莉花记者得到任何输出。 logging显示行'16规格,0失败',但没有findxml文件。

经过多天的testing各种设置和谷歌我几乎准备放弃:(

目前的设置是使用帮手。

var reporters = require('jasmine-reporters'); var junitReporter = new reporters.JUnitXmlReporter({ savePath: '..', consolidateAll: false }); var jasmineEnv = jasmine.getEnv(); jasmineEnv.beforeAll(function () { console.log('Before all...'); jasmineEnv.addReporter(junitReporter); }); 

这个代码被调用,我也试图添加记者,而不是beforeAll ,这似乎做了完全一样的。

我已经添加了一些日志到JUnitXmlReporter里面的各种方法,除了jasmineStartedjasmineDonewriteFile之外,我看起来大部分是按照预期打印的。 特别是缺lesswriteFile似乎是我的问题的关键。

我在做什么错我错过了什么?

我可以通过将茉莉花特定configuration预先放入一个spec runner来解决这个问题。 在我的spec /目录中,我定义了一个名为spec_runner.js的文件,内容如下:

 var Jasmine = require('jasmine'), reporters = require('jasmine-reporters'); var junitReporter = new reporters.JUnitXmlReporter({ savePath: __dirname, consolidateAll: false }); var jasmine = new Jasmine(); jasmine.loadConfigFile("spec/support/jasmine.json"); jasmine.addReporter(junitReporter); jasmine.execute(); 

另外在spec /中 ,我有一个单元/集成/目录,我分别有我的单元和集成testing。 拥有包含Jasmineconfiguration选项的spec / support /目录也很重要。 如果您从项目的根目录发出jasmine init ,则应创build此目录。

对于这个例子, spec / support / jasmine.json应该如下所示:

 { "spec_dir": "spec", "spec_files": [ "**/*[sS]pec.js" ], "helpers": [ "helpers/**/*.js" ] } 

如果在命令行提示符下input: jasmine spec / test_runner.js则应从项目的根目录获取JUnit XML输出。

最后,要更改写入JUnit XML的path,必须更改在创buildJUnitXmlReporter的新实例时传递的对象字面值中的savePath值。

我没有看到从Github上的jasmine env对象或茉莉花文档中调用beforeAll的任何示例。

尝试拉动beforeAll函数之外的addReporter命令。

 jasmineEnv.addReporter(junitReporter); 

在运行任何规格之前,还要确保带有此代码的文件由testing运行器执行。

@Jesse:谢谢你的回复。 在beforeAll中添加记者是在各种其他失败的地点之后进行的一个实验,他们大多数都有相同的行为。

在涉及的剧本深入潜水后,我发现了以下问题。

当“简单地”在助手脚本中添加记者时,您将您的记者添加到已经运行的runnen,一个没有运行任何规格但执行已经开始。 因此,已经添加了一个ConsoleReporter; ConsoleReporter的onComplete调用exit(0)或者exit(1) ,这样会杀死/退出整个状态传递给所有其他记者的过程。 (也有描述https://github.com/jasmine/jasmine-npm/issues/32

我改变了addReporter – 方法,所以它不移动arrays中的新记者而不是推。 这样,新添加的记者会在ConsoleReporter之前被ConsoleReporter ,因此在defaultOnComplete退出该过程之前也会被调用。

在我的问题中,他们告诉我这个ConsoleReporter的退出行为被改变了,所有的记者都可以享受完整的事件。