Вы можете использовать каналы в Linux. Например, запустите вашу проблему так:
java myProgram < input_file > output_file
Это запустит myProgram и загрузит ввод из input_file. Весь вывод будет записан в файл с именем output_file.
Теперь создайте еще один файл с именем Ожидаемый_файл, который необходимо создать вручную, чтобы указать точный результат, который вы ожидаете получить для какого-либо ввода (в частности, для ввода, который есть в файле ввода_).
Затем вы можете использовать diff для сравнения выходного_файла и ожидаемого_файла:
diff output_file expected_file
Это выведет любые различия между двумя файлами. Если нет различий, ничего не будет возвращено. В частности, если что-то возвращается, ваша программа работает неправильно (или ваш тест не верен).
Последний шаг - связать все эти команды в некотором языке сценариев, таком как Ruby (:)) или Bash (: ().
Это самый простой способ выполнить такое тестирование. Если вам нужно написать больше тестов, рассмотрите возможность использования некоторых тестовых сред, таких как junit.