Dans mon programme j'ai une liste de n scripts de test, j'ai besoin d'itérer la liste et d'exécuter 3 scripts de test en parallèle. Pour réaliser cette tâche, je créé un Threadpool de taille 3. Ma mise en œuvre est comme ci-dessous pour le pool de threadsJava runtime.exec() exécute plusieurs processus en utilisant Threadpool
ExecutorService executor = Executors.newFixedThreadPool(3);
for (int threadpoolCount = 0; threadpoolCount < classNames.size(); threadpoolCount++) {
Runnable worker = new ProcessRunnable(classNames.get(threadpoolCount));
executor.execute(worker);
}
executor.shutdown();
while (!executor.isTerminated()) {
}
System.out.println("Finished all threads");
ci-dessous est ma mise en œuvre de fil où dans i exécuter un fichier de commandes avec des commandes de Maven dans ce
public void run() {
try {
System.out.println(testname);
System.out.println("Task ID : " + this.testname + " performed by " + Thread.currentThread().getName());
Process p = Runtime.getRuntime().exec("cmd /C Junit_runner.bat" + " " + testname);
p.waitFor();
Thread.sleep(5000);
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Voici ce que je reçois dans ma console (je ne démarre pas l'invite de commande et en cours d'exécution en arrière-plan)
com.selenium.test.testname1 N ° de tâche: com.selenium.test.testname1 effectuée par pool-1-fil-1
com.selenium.test.testname1 ID de tâche: com.selenium.test.testname2 effectuée par piscine- 1-fil-2
com.selenium.test.testname1 ID de tâche: com.selenium.test.testname3 effectuée par pool-1-fil-3
L'exécution interrompt ici et n'a rien fait, je ne suis pas sur e ce qui se passe derrière. J'ai également vérifié que le fichier batch fonctionne correctement.
Combien de temps faut-il pour lancer Junit_runner.bat? – Jatin
Il prend 2 à 3 minutes pour terminer ses exécutions et termiante, son e est ma commande de fichier par lots. ** @ Écho désactivé echo% 1 appel mvn -f pom.xml test -Dtest =% 1 exit ** – Vigneshwaran