像 JSON 格式化程序一样只挂在test-run-finished
上的自定义格式化程序在并行化时按预期工作,但使用早期事件(如test-(step|case)-started
并按顺序排列的格式化程序)的输出不按顺序记录,使输出文档结构无效。 有没有计划解决这个问题? 可以缓冲每个工作人员的输出并在完成后立即将其全部记录在主服务器上吗?
我认为每个事件都应该包含足够的信息,以便能够将其链接到以前的事件而不是缓冲。
不确定如果只挂钩“结束”事件会如何工作,因为它会错过测试输出的开始。 以漂亮的格式化程序和基于 IntelliJ 的编辑器的测试运行程序为例,它们的工作方式如下:
Scenario: Foo
,在 IntelliJ 的情况下 -- TeamCity 格式的评论#teamcity[testStarted]
pass/fail
摘要或##teamcity[testFinished]
上记录结束语该顺序很重要,因为在测试记录的任何内容之前都有开始语句,然后是结束语句,并且没有其他测试应该同时记录任何内容,否则它们会混淆哪个输出属于哪个测试。 缓冲似乎可以解决这个问题,因为每个输出都将在原子操作中被隔离并登录到主机上。
我们可以将isParallel
选项传递给自定义格式化程序,让他们知道在 test-case-started / test-step 事件上输出内容会变得混乱,因此他们应该只在 test-case-finished 事件上输出。
我们需要更多地讨论这个问题。 目前,在尝试写入终端时,由于 I/O 冲突,使用任何格式化程序都有导致黄瓜运行器崩溃的风险。 进度条格式化程序非常适合并行运行器,如果它只移动进度条然后在最后报告摘要。
该计划是过渡到使用来自黄瓜的消息流的独立格式化程序。
请参阅monorepo 中的路线图和dots-formatter
和pretty-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
一个实例)可以帮助解决其中的一些问题。
最有用的评论
我们非常需要这个功能!!!