ファイルとSQLテーブルを操作し、そのテーブルのデータを期待値と比較するJUnitテスト内でいくつかのシェルスクリプトを呼び出すJavaプログラムに取り組んでいます(したがって、.とE以外は出力されません)。理論上はすべて機能しますが、1 つのタイプのテストは期待どおりに機能し、もう 1 つのタイプのテストは 10 分間のタイムアウト後に失敗するというストレージ バグに遭遇しています。問題をシェル スクリプトの 1 つに切り分けましたが、このスクリプトは作成していないため、変更することはできません。これをトラブルシューティングできる最善の方法は、問題のスクリプトの出力を保存することです。これは、一連のエコー コールからのものです。エコー出力を保存するためのやや簡単で信頼できる方法はありますか? 私は少しグーグルで調べましたが、何も出てきませんでした。まだ出力を保存しようとしていないので、保存しません
//Currently using BufferedWriter, File, FileWriter, IOException, and Writer
import java.io.*;
//Method to write to a log file
public void record(String input) throws IOException {
writer = new BufferedWriter(new FileWriter(file,true));
writer.write(input + "\n");
writer.close();
}
Runtime rt = Runtime.getRuntime();
//Several of these since a lot of file manipulation/script running occurs
process = rt.exec("./shell.sh");
process.waitFor();
私が尋ねた別の質問では、いくつかの理由から Runtime.exec() を使用しないことを誰かが推奨していました。exec() を使用しないことの利点は理解していますが、このバージョンのプログラムでは使用する必要があります。
tl;dr の質問: 私の Java プログラムはシェル スクリプトを簡単に実行できるだけでなく、エコー出力を保存することもできますか? そうでない場合、出力を読み取るための tail -f に相当するものはありますか?