SOAP WebサービスでUNITテストを作成します。 Webサービスは他のjarファイルで動作し、Runtime.getRuntime()。exec(// java-jar ...)をロードしようとします。 jarファイルの読み込みには2分かかります。ロードが新しいスレッドにある場合、ロードする前にテストが終了します。jarファイルは終了します。ロードがメインスレッドにある場合、テストは終了しません。サイクル中にHTTP応答をリッスンしようとしますが、サイクルが動作しているときには、jarファイルがロードされていません。JAVAからのjarファイルのロードが完了した後にテスト本体を開始します。
@Before
public void setUp() throws Exception {
// Get path of jar file
thread = new Thread() {
public void run() {
try {
Process process = Runtime.getRuntime().exec(path-to-java.exe -jar webservices.jar);
process.waitFor();
process.destroy();
} catch (Exception e) {
e.printStackTrace();
}
}
};
thread.start();
int responseCode;
do {
responseCode = getResponseCodeHTTP("http://localhost:8080/services");
} while (responseCode < 200 || responseCode >= 400);
System.out.println("Web services have loaded");
}
public int getResponseCodeHTTP(String urlToRead) throws IOException {
URL url = new URL(urlToRead);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
int result;
try {
conn.connect();
result = conn.getResponseCode();
} catch (ConnectException e){
return 500;
}
return result;
}
デバッグのヘルプ(「なぜこのコードは機能していませんか?」)には、目的の動作、特定の問題またはエラー、および質問自体に再現するのに必要な最短コードが含まれている必要があります。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:[mcve]を作成する方法。あなたの*質問*を改善するために[編集]リンクを使用してください - コメントでより多くの情報を追加しないでください。ありがとう! – GhostCat
私は本当にあなたの質問を理解していない。起こると予想されること、そして実際に起こることを慎重に記述します。それを超えて:実際に完全な機能テストを行うときは、**ユニット**のテストを呼び出さないでください。ユニットテストは物事を孤立して行います。 Webサービスの起動と実行を必要とするテストは単体テストではありません。 – GhostCat