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里面的各种方法,除了jasmineStarted
, jasmineDone
和writeFile
之外,我看起来大部分是按照预期打印的。 特别是缺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的退出行为被改变了,所有的记者都可以享受完整的事件。
- 所有的testing都运行完毕之后再进行清理
- 问题在JavaScript的recursion调用
- 如何对量angular器中的不同规格文件进行单独报告?
- Jasmine Nodetestingsubprocess
- NodeJS,WebStorm和Jasmine:ReferenceError:describe在debugging时没有定义
- 如何模拟来自http.request(nodejs,jasmine,sinon)的响应
- 无法分配给只读属性“.js”的#<对象>
- AngularJS:在业力testingmodule.exports:模块没有定义
- 如何在node.js intellisense中启用Jasmine支持