Java 如何在Cucumber JVM(如Cucumber Ruby)中捕获STDOUT';s推杆?
在本例中,通过调用Java 如何在Cucumber JVM(如Cucumber Ruby)中捕获STDOUT';s推杆?,java,cucumber,cucumber-jvm,Java,Cucumber,Cucumber Jvm,在本例中,通过调用将放入步骤定义中的任何输出都被捕获为“测试输出”,并相应地格式化,如以下输出示例所示: 功能:一件简单的事情 场景:简单场景#功能/简单。功能:3 假设我做了一个步骤#features/steps/step.rb:1 此文本以puts输出 正如您在上面看到的,它以“漂亮”的输出格式缩进。在JSON格式中,它甚至以结构化方式捕获: “关键字”:“场景”, “名称”:“一个简单的场景”, "行":3,, “说明”:“, “id”:“一件简单的事情;一个简单的场景”, “类型”:“
将放入步骤定义中的任何输出都被捕获为“测试输出”,并相应地格式化,如以下输出示例所示:
功能:一件简单的事情
场景:简单场景#功能/简单。功能:3
假设我做了一个步骤#features/steps/step.rb:1
此文本以puts输出
正如您在上面看到的,它以“漂亮”的输出格式缩进。在JSON格式中,它甚至以结构化方式捕获:
“关键字”:“场景”,
“名称”:“一个简单的场景”,
"行":3,,
“说明”:“,
“id”:“一件简单的事情;一个简单的场景”,
“类型”:“场景”,
“步骤”:[
{
“关键字”:“给定”,
“名称”:“我做一个步骤”,
"行":4,,
“产出”:[
“此文本通过puts输出”
],
}
],
上面是使用一个普通的特征文件和步骤定义生成的,如下所示:
给定(/^I执行步骤$/)执行
puts“此文本通过puts输出”
结束
在Java中实现Cucumber步骤时,是否有一个等价的函数,我可以使用它以相同的方式捕获此输出?打印到System.out
会绕过捕获机制,就像在Ruby中使用STDOUT.put
一样
我没有看到任何Cucumber JVM示例使用此功能,这与Ruby Cucumber的许多示例不同,但Cucumber JVM的JSON输出中显然有一个“output”条目因此,我认为必须有一种写入该字段的方法。看起来这可以通过写入表示当前运行场景的对象来实现
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中的put
调用一样,这将在JSON输出文件中捕获。它在“pretty”输出中也被着色,尽管它不像Ruby实现那样缩进。然而,这似乎是我能找到的最接近的等价物