在香草黄瓜中,在步骤定义中通过调用puts
输出的任何内容都被捕获为"测试输出"并相应地格式化,如下面的输出示例所示:
Feature: A simple thing
Scenario: A simple scenario # features/simple.feature:3
Given I do a step # features/steps/step.rb:1
This text is output with puts
如上所述,它有助于缩进"漂亮"输出格式。在JSON格式中,它甚至以结构化的方式捕获:
"keyword": "Scenario",
"name": "A simple scenario",
"line": 3,
"description": "",
"id": "a-simple-thing;a-simple-scenario",
"type": "scenario",
"steps": [
{
"keyword": "Given ",
"name": "I do a step",
"line": 4,
"output": [
"This text is output with puts"
],
}
],
上面是使用一个简单的特征文件和一个步骤定义生成的,如下所示:
Given(/^I do a step$/) do
puts 'This text is output with puts'
end
在Java中实现Cucumber步骤时是否存在等效函数,我可以使用它以相同的方式捕获此输出?打印到System.out
会导致绕过捕获机制,就像在Ruby中使用STDOUT.puts
一样。
与许多Ruby Cucumber的例子不同,我还没有看到任何使用此功能的Cucumber-JVM示例,但是Cucumber-JVM在JSON输出中显然有一个条目用于&# 34;输出,"因此,我想必须有一种方法可以写入该领域。
答案 0 :(得分:3)
看起来这可以通过写入代表当前运行场景的对象来实现。
public class StepDefs {
private Scenario scenario;
/* Need to capture the scenario object in the instance to access it
* in the step definition methods. */
@Before
public void before(Scenario scenario) {
this.scenario = scenario;
}
@Given("^I do a step$")
public void iDoAStep() {
scenario.write("This text is output with scenario.write");
}
}
与Ruby中的puts
调用一样,这会在JSON输出文件中捕获。它也在“漂亮”输出中着色,尽管它没有像Ruby实现那样缩进。然而,这似乎是我能找到的最接近的等价物。