Adrian_Broher
Erfahrenes Mitglied
Hallo tutorials.de,
ich arbeite zur Zeit an einer regressionsfähigen GUI Testumgebung, welche eine in Java 1.5 (um genau zu sein 1.5.0_10-b03) geschriebene Applikation testet. Diese Testumgebung stellt sich aus den folgenden Komponenten zusammen:
Das Problem ist nun folgendes:
Wenn ein Testfall fehlschlägt terminiert der Testexecutor die JVM des Testobjekts mit dem Windowsbefehl "taskkill". "taskkill" kann die Windowsprozesse anhand des Namens der exe Datei (Prozessimage), der ProzessID oder des Fenstertitels identifizieren. Problem ist nun das ich die ProzessID des Testobjektes nicht bekommen kann, da dieses indirekt über eine Batchdatei gestartet wird. Ich kann auch nicht über den Imagenamen gehen, da dann das Testobjekt und der Batchexecutor terminiert werden (es ist ja bei beiden 'Java.exe'). Der Fenstertitel geht genauso wenig, da das Testobjekt eine Applikation mit einer Vielzahl von Fenstern ist und der Prozess dann nur den Fenstertitel des aktuell ausgewählten Fensters zeigt.
Die Frage ist nun ob mir Java.exe oder ein anderes Programm eine Möglichkeit gibt alle aktuell auf dem System laufenden JVM aufzulisten, diese nach der ausgeführten Main Datei (also mit dem main Einsprungspunkt) zu filtern und die dazugehörige ProzessID zurückzugeben. Ich habe mir zwar die entsprechenden Optionen der Java.exe angeschaut, aber meiner Meinung nach nichts gefunden, was meine gesuchte Funktionalität implementiert.
Ich bin auch für andere Ideen offen, wenn sie die folgendene Bedingungen einhält:
Wenn ein Moderator meint dieser Thread gehört nach "Betriebssysteme, Anwendungen & Hardware/Microsoft Windows" kann er ihn natürlich verschieben. Wobei ich aber glaube das sich das Problem über die JVM oder ein entsprechendes SUN Tool lösen lässt.
ich arbeite zur Zeit an einer regressionsfähigen GUI Testumgebung, welche eine in Java 1.5 (um genau zu sein 1.5.0_10-b03) geschriebene Applikation testet. Diese Testumgebung stellt sich aus den folgenden Komponenten zusammen:
- Ein PC mit Windows XP SP2 Installation.
- Die zu testende, auf Java basierende Applikation, im nachfolgenden Testobjekt genannt.
- Ein cli Programm, welches die in VB6 beschriebenen Testfälle ausführt. Diese Applikation ist Bestandteil der GUI Testsoftware TestPartner, im nachfolgend Testexecutor genannt.
- Eine auf Java basierende Applikation, welche eine Auflistung aller existierenden Testfälle darstellt und diese mit Hilfe des Testexecutor als Testbatch ausführt, im nachfolgenden Batchexecutor genannt.
Das Problem ist nun folgendes:
Wenn ein Testfall fehlschlägt terminiert der Testexecutor die JVM des Testobjekts mit dem Windowsbefehl "taskkill". "taskkill" kann die Windowsprozesse anhand des Namens der exe Datei (Prozessimage), der ProzessID oder des Fenstertitels identifizieren. Problem ist nun das ich die ProzessID des Testobjektes nicht bekommen kann, da dieses indirekt über eine Batchdatei gestartet wird. Ich kann auch nicht über den Imagenamen gehen, da dann das Testobjekt und der Batchexecutor terminiert werden (es ist ja bei beiden 'Java.exe'). Der Fenstertitel geht genauso wenig, da das Testobjekt eine Applikation mit einer Vielzahl von Fenstern ist und der Prozess dann nur den Fenstertitel des aktuell ausgewählten Fensters zeigt.
Die Frage ist nun ob mir Java.exe oder ein anderes Programm eine Möglichkeit gibt alle aktuell auf dem System laufenden JVM aufzulisten, diese nach der ausgeführten Main Datei (also mit dem main Einsprungspunkt) zu filtern und die dazugehörige ProzessID zurückzugeben. Ich habe mir zwar die entsprechenden Optionen der Java.exe angeschaut, aber meiner Meinung nach nichts gefunden, was meine gesuchte Funktionalität implementiert.
Ich bin auch für andere Ideen offen, wenn sie die folgendene Bedingungen einhält:
- Der TestPC bleibt Windows basiert. Ist nicht meine Idee, sondern die Policy für das aktuelle Projekt (der Kunde hat Win Rechner, also muss die Applikation unter Win getestet werden usw usf, man kennt das Spielchen ja).
- Das Testobjekt wird nicht geändert.
- Es können Applikationen nachinstalliert (zB Powershell oder gnuutils, usw) oder implementiert (beliebige win32 kompaktible Lösung) werden. Aber ich würde die minimale funktionierende Lösung bevorzugen.
Wenn ein Moderator meint dieser Thread gehört nach "Betriebssysteme, Anwendungen & Hardware/Microsoft Windows" kann er ihn natürlich verschieben. Wobei ich aber glaube das sich das Problem über die JVM oder ein entsprechendes SUN Tool lösen lässt.
Zuletzt bearbeitet: