Cucumber-js: 并行选项将如何与事件协议一起使用?

创建于 2018-02-05  ·  9评论  ·  资料来源: cucumber/cucumber-js

像 JSON 格式化程序一样只挂在test-run-finished上的自定义格式化程序在并行化时按预期工作,但使用早期事件(如test-(step|case)-started并按顺序排列的格式化程序)的输出不按顺序记录,使输出文档结构无效。 有没有计划解决这个问题? 可以缓冲每个工作人员的输出并在完成后立即将其全部记录在主服务器上吗?

最有用的评论

我们非常需要这个功能!!!

所有9条评论

我认为每个事件都应该包含足够的信息,以便能够将其链接到以前的事件而不是缓冲。

不确定如果只挂钩“结束”事件会如何工作,因为它会错过测试输出的开始。 以漂亮的格式化程序和基于 IntelliJ 的编辑器的测试运行程序为例,它们的工作方式如下:

  1. 在开始事件上记录“opening”语句,在漂亮的情况下 -- Scenario: Foo ,在 IntelliJ 的情况下 -- TeamCity 格式的评论#teamcity[testStarted]
  2. 运行在格式化程序的初始输出后打印自己的日志的测试
  3. 在结束事件、 pass/fail摘要或##teamcity[testFinished]上记录结束语

该顺序很重要,因为在测试记录的任何内容之前都有开始语句,然后是结束语句,并且没有其他测试应该同时记录任何内容,否则它们会混淆哪个输出属于哪个测试。 缓冲似乎可以解决这个问题,因为每个输出都将在原子操作中被隔离并登录到主机上。

我们可以将isParallel选项传递给自定义格式化程序,让他们知道在 test-case-started / test-step 事件上输出内容会变得混乱,因此他们应该只在 test-case-finished 事件上输出。

我们需要更多地讨论这个问题。 目前,在尝试写入终端时,由于 I/O 冲突,使用任何格式化程序都有导致黄瓜运行器崩溃的风险。 进度条格式化程序非常适合并行运行器,如果它只移动进度条然后在最后报告摘要。

该计划是过渡到使用来自黄瓜的消息流的独立格式化程序。

请参阅monorepo 中的路线图dots-formatterpretty-formatter (WIP)

我们非常需要这个功能!!!

你好! 有没有机会和诱惑记者并行运行黄瓜js? 当我尝试使用 Cucumber-js --parallel 2 -t @debug --formatreporter.js:./dummy.txt 运行时,我得到了 TypeError: Cannot read property 'sourceLocation' of undefined
先感谢您!

与这里的@yevgen-getalo 相同的问题。

Closing as v7.0.0 使用上面提到的新消息协议,其中$THING_started$THING_finished事件可以通过 id 可靠地绑定在一起。 eventDataCollector.query对象( @cucumber/query一个实例)可以帮助解决其中的一些问题。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

travi picture travi  ·  5评论

kozhevnikov picture kozhevnikov  ·  6评论

edwinwright picture edwinwright  ·  3评论

lamartire picture lamartire  ·  6评论

jechazelle picture jechazelle  ·  5评论