Как выполнить модульное тестирование, чтобы ExecutorService порождал новый поток для задачи?

Как один модуль тестирует, что новый поток был создан для задачи Runnable при использовании ExecutorService?

По сути, у меня есть статический пул потоков для моего приложения.

public static final ExecutorService executorService = Executors.newCachedThreadPool();

я хотел бы использовать этот пул потоков для моих модульных тестов, а не выводить их из строя или вводить новый пул потоков, поскольку разные пулы потоков могут существенно изменить поведение моего приложения (фиксированное или кэшированное, запланированное и т. д.); Я хочу убедиться, что я тестирую приложениеповедение с пулом потоков во время выполнения.

Пул кэшированных потоков, кажется, работает лучше для меня. Проблема в том, что так какЕсли статические потоки кэшируются в течение 60 секунд, только первый тест будет порождать новый поток в пуле, в то время как последующие тесты будут повторно использовать этот поток.

Код юнит-теста:

public void testDoCallExecutesTaskInAnotherThread() {    
    final Client client = this.createClient();
    final ThreadPoolExecutor threadPoolExecutor = (ThreadPoolExecutor) client.getExecutorService(); // gets the static thread pool
    final int initPoolSize = threadPoolExecutor.getPoolSize();
    final Response response = client.doCall();
    Assert.assertEquals(initPoolSize + 1, threadPoolExecutor.getPoolSize());
}

Советы о том, как заставить это работать, или другой подход в целом, будут оценены.

Ответы на вопрос(1)

Ваш ответ на вопрос