私は現在、Java アプリケーションの 1 つのテスト ケースを作成しようとしています。私のコードでは、私の Java アプリケーションはバッチ ファイルを呼び出します。バッチ ファイルは別の Java プロセスを開始し、呼び出し元の Java アプリケーションから消費する必要があるエラー コードを返します。バッチファイルを呼び出すために、次のことを行っています。
Process process = runTime.exec(new String[]{"cmd.exe","/c",scriptPath});
exitValue = process.waitFor();
バッチファイルは次のとおりです。
@echo off
cd %~dp0
java -cp frames.FrameDriver
SET exitcode=%errorlevel%
exit /B %exitcode%
上記のコードとバッチ ファイルを使用すると、JUnit フレームワークは、この特定のテスト ケースが終了するのを待っているかのように停止します。JUnit がテスト ケースでハングしているときに、タスク マネージャーに移動し、java.exe プロセスを終了すると、JUnit フレームワークは他のケースを続行できます。
.bat ファイルをダブルクリックして実行すると、Java アプリケーションが正常に実行されます。
START
バッチ ファイル内のコマンドの前にバッチ コマンドを追加するjava
と、ハングアップの問題が解決するようですが、Java アプリケーションから正しい終了コードを取得できないようです。これは常に 0 であるためです。(Java アプリケーションは、システムを使用してエラー コードで終了します。 .exit(INTEGER_VALUE))。%errorlevel% 値が「開始」コマンド自体の終了値によって上書きされていると想定しています。
誰でもこの問題を解決する方法を教えてもらえますか?
ありがとう。
PS: 違いがある場合は、JDK 5 と Netbeans 5.5.1 を使用しています。