Как протестировать интерактивное Java-приложение с использованием огурца и Арубы - PullRequest
0 голосов
/ 28 марта 2011

Как протестировать интерактивное 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 {
    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 используется только для клавиатуры?

1 Ответ

0 голосов
/ 28 марта 2011

Несколько вещей, которые вы можете попробовать:

Первый тест, что Cucumber / Aruba принимает ваш вызов System.out.println, заставляя вывод быть тем, что вы ожидаете в своем тесте: т.е.

System.out.println("something");

Если это сработает, то вы понимаете, что чтение стандартного ввода правильно (я никогда не видел, чтобы кто-то читал со стандартного ввода так, как вы это делаете).Ответ ниже, как я обычно вижу людей, читающих со стандартного ввода в Java:

Как читать ввод с нескольких строк в Java

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...