Я пишу тестовое приложение, которое использует JUnit. Мы запускаем JUnit вручную с работающим классом
public class MyLauncher implements Runnable {
public void run() {
launchJunit();
}
private void launchJunit() {
LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder.request().selectors(selectors).build();
Launcher launcher = LauncherFactory.create();
launcher.execute(request);
}
}
с помощью
public class MyApplication {
public void main(String[] args) {
ScheduledExecutorService pool = Executors.newScheduledThreadPool(1);
ScheduledFuture<?> thread = null;
thread = pool.schedule(new MyLauncher());
//
// do some magic
//
thread.cancel(true);
// or
pool.shutdownNow();
}
}
Однако ни thread.cancel()
, ни pool.shutdownNow()
не прервут поток JUnit. Если я не использую System.exit(0)
в конце своего приложения, JUnit продолжит работу. Есть ли способ прервать поток JUnit? Я использую расширения JUnit, чтобы при необходимости подключиться к некоторому обратному вызову.