2015-06-08 8 views
7

Sto scrivendo un programma che imposta una GUI per avviare script di test JUnit che utilizzano Selenium WebDriver in Java. La GUI imposta una coda di test JUnit in background (o almeno così credo). Sulla GUI, voglio utilizzare un pulsante "stop test" che fermerà tutti i futuri test di JUnit che sono ancora in coda dall'esecuzione, ma voglio farlo in maniera tempestiva. Al momento ho un codice che interromperà tutti i test, ma se 190 test sono in coda, occorrono fino a 1-2 secondi per interrompere un singolare test in coda dall'esecuzione che non è tempestivo, né consumer friendly se si considerano molti test :C'è un modo per fermare i test JUnit in coda e mantenere ancora in esecuzione JavaFX Gui?

Field field = JUnitCore.class.getDeclaredField("fNotifier"); 
field.setAccessible(true); 
RunNotifier runNotifier = (RunNotifier) field.get(runner); 
runNotifier.pleaseStop(); 

c'è un modo per cancellare la coda o del test JUnit o un thread specifico per chiudere che si fermerà l'esecuzione di script senza uccidere la GUI?

risposta

0

Dopo averlo visitato di recente, ho scoperto che la notifica di esecuzione nella mia domanda funziona abbastanza velocemente, ho appena avuto troppi sottoprocessi che ho recentemente ottimizzato durante l'azione di test di arresto. Ora il programma di notifica consente ai test in coda di realizzare che non possono essere eseguiti quasi istantaneamente.

Sebbene questo tecnicamente non risponda alla domanda su come smettere di eseguire in coda i test di JUnit senza tentare almeno di avviarli, comunque.

3

Come si definiscono i thread nel file xml? Trovato alcune cose usando la variabile parallela per uccidere immediatamente tutti i thread specifici. Forse se dai il nome alle tue discussioni con qualcosa di comune e incrementi un contatore per mettere un "_1" ... "_2" e così via alla fine del nome comune, puoi eseguire rapidamente il loop e uccidere direttamente il thread? Hai accennato a una serie di test che non eri positivo su come ha funzionato, magari prendi la fila nelle tue mani manualmente e uccidili tutti.

+1

Avevo provato a farlo in una data precedente e non riuscivo a individuare correttamente i thread nel codice che eseguivano i test JUnit a meno che non avessi ucciso un thread necessario per l'esecuzione della GUI. –

+0

Cosa succede se si riavvia la GUI e si elimina quella vecchia. MainGuiClass.this.dispose(); new MainGuiClass(); O qualcosa del genere –

+0

Darò un'occhiata a questo, ma preferibilmente, mi piacerebbe trovare un modo per mantenere la GUI attiva e funzionante fino a quando l'utente decide di voler interrompere i test. La GUI richiede 10 secondi per essere caricata, quindi non sarebbe molto facile da usare. –

Problemi correlati