Как я могу проверить ввод и вывод приложения Java? - PullRequest
0 голосов
/ 25 февраля 2012

У меня есть простое консольное приложение Java, и я хотел бы автоматически проверить его ввод / вывод. На входе всегда только одна строка, но иногда на выходе больше, чем одна строка.

Как я могу это сделать? (с оболочкой Linux / Python / Eclipse / Java)

Ответы [ 3 ]

7 голосов
/ 25 февраля 2012

Вы можете использовать каналы в Linux. Например, запустите вашу проблему так:

java myProgram < input_file > output_file

Это запустит myProgram и загрузит ввод из input_file. Весь вывод будет записан в файл с именем output_file.

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

Затем вы можете использовать diff для сравнения выходного_файла и ожидаемого_файла:

diff output_file expected_file

Это выведет любые различия между двумя файлами. Если нет различий, ничего не будет возвращено. В частности, если что-то возвращается, ваша программа работает неправильно (или ваш тест не верен).

Последний шаг - связать все эти команды в некотором языке сценариев, таком как Ruby (:)) или Bash (: ().

Это самый простой способ выполнить такое тестирование. Если вам нужно написать больше тестов, рассмотрите возможность использования некоторых тестовых сред, таких как junit.

1 голос
/ 25 февраля 2012

В eclipse вы можете записать вывод вашей консоли в физический файл, используя настройки конфигурации Run. Run-> Run Configuration-> выберите ваше приложение-> перейдите на общую вкладку-> в разделе «Стандартный ввод и вывод» укажите физический путь к файлу.

0 голосов
/ 25 февраля 2012

Вы можете выполнить любую команду Unix, используя команду watch. Команда наблюдения будет выполняться до тех пор, пока вы не завершите ее нажатием CTRL + C или не завершите процесс.

$ watch -n 5 ls

По умолчанию команда наблюдения использует 2-секундный интервал, вы можете изменить его с помощью опции -n.

Или вы можете написать такую ​​функцию в вашем .bashrc (с здесь )

function run() {
    number=$1
    shift
    for i in {1..$number}; do
      $@
    done
}

И используйте это так

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