如何使用cucumber和aruba测试交互式java应用程序
如何使用cucumber和aruba测试交互式java应用程序 我有一个黄瓜/阿鲁巴的场景:如何使用cucumber和aruba测试交互式java应用程序,java,cucumber,Java,Cucumber,如何使用cucumber和aruba测试交互式java应用程序 我有一个黄瓜/阿鲁巴的场景: Scenario: Simple echo Given I run `java -cp /bin Echo` interactively When I type "something\n" Then the output should contain "something" 要测试此简单java程序,请执行以下操作: import java.util.*; class Echo {
Scenario: Simple echo
Given I run `java -cp /bin Echo` interactively
When I type "something\n"
Then the output should contain "something"
要测试此简单java程序,请执行以下操作:
import java.util.*;
class Echo {
public static void main(String[] args) {
Scanner stdin = new Scanner(System.in);
System.out.println(stdin.next());
}
}
当我运行测试时,它失败了,我得到以下错误:
Then the output should contain "something"
expected "" to include "something" (RSpec::Expectations::ExpectationNotMetError)
features/cli.feature:15:in `Then the output should contain "something"'
当我用这个ruby程序尝试相同的测试时:
puts gets
都是绿色的
我做错什么了吗
是否必须使用其他方法读取标准输入?System.in是否仅用于键盘?您可以尝试以下几种方法: 首先测试Cucumber/Aruba是否正在接收System.out.println调用,方法是强制输出为您在测试中期望的输出:即
System.out.println("something");
如果这是可行的,那么你就会预感阅读标准输入是正确的(我从未见过有人以你这样的方式阅读标准输入)。下面的答案是我通常看到人们阅读Java标准输入的方式:
所以System.out.println(“某物”)仍然没有被接收并通过测试?听起来阿鲁巴没有获得Java输出。它是否从System.err.println(“某物”)中提取内容?