SOAP 웹 서비스로 UNIT 테스트를 작성하고 싶습니다. Webservices는 Runtime.getRuntime(). exec (// java-jar ...)를로드하려고 시도하는 다른 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
나는 정말로 당신의 질문을 이해하지 못합니다. 일어날 것으로 예상되는 것과 실제로 발생하는 것을 신중하게 설명하십시오. 그 외에도 ** 실제 기능 테스트를 수행 할 때 ** unit ** 테스트를 호출하지 마십시오. 단원 테스트는 격리 된 방식으로 작업을 수행합니다. 웹 서비스를 시작하고 실행해야하는 테스트는 단위 테스트가 아닙니다. – GhostCat