Автоматизация ввода с консоли затмения со значениями из файла - PullRequest
0 голосов
/ 29 марта 2012

В настоящее время у меня есть проблема, когда мне нужно протестировать тысячи консольных вводов, чтобы создать журнал для другой команды проекта.Проект разрабатывается в eclipse (java)

В основном процесс выглядит следующим образом:

1) Программа загружает и выводит некоторый текст на консоль

2) Ввод пользователятекста (иногда в зависимости от того, что программа напечатала ранее)

3) Программа выводит больше текста, готового снова к вводу.

В основном мне нужно написать / использовать скрипт, который позволит мнепоместить все входные данные в какой-то файл и запустить его для создания этого файла журнала.

Можно ли это сделать, и есть ли у вас какие-либо советы?

1 Ответ

0 голосов
/ 29 марта 2012

В общем, хороший способ решить эту проблему - абстрагировать ввод и вывод.Например, пусть ваш управляющий класс принимает InputStream и OutputStream в качестве аргументов в своем конструкторе.

В методе main вашей фактической программы создайте экземпляр этого контроллера с System.in и System.out соответственно.Для вашей «пакетной» программы вы можете предоставить любые другие InputStream и OutputStream , которые вам нравятся.

Что касается комментариев user1291492: модульное тестирование всегда рекомендуется, однако оно выглядиткак будто ваша проблема на самом деле не связана с тестированием, а скорее с изменением вашей программы в качестве своего рода посредника, что не одно и то же.

И если вам действительно нужен быстрый& грязное решение (я бы посоветовал не брать на себя технические долги), в системах * NIX вы можете попробовать это:

cat * | java -jar yourprogram.jar > logoutput.txt

при условии, что вы скопировали все входные файлы в один каталог. cat объединит все файлы в каталоге, которые затем будут переданы на стандартный ввод (через «|») вашей программы, чей стандартный вывод перенаправляется в «logoutput.txt (через«> »).

...