@Test
public void testShutdown03() throws Exception {

    ThreadPoolExecutor mockThreadPoolExecutor = mock(ThreadPoolExecutor.class);
    doThrow(new InterruptedException()).doReturn(true).when(
            mockThreadPoolExecutor).awaitTermination(anyLong(),
            eq(TimeUnit.MILLISECONDS));
    doReturn(mockThreadPoolExecutor).when(threadPoolTaskExecutor)
            .getThreadPoolExecutor();
    doNothing().when(threadPoolTaskExecutor).shutdown();
    AsyncJobLauncherImpl asyncJobLauncher = new AsyncJobLauncherImpl(
            threadPoolTaskExecutor, asyncJobWorker);
    asyncJobLauncher.executorJobTerminateWaitIntervalTime = 1L;
    // テスト実行
    asyncJobLauncher.shutdown();
    // 待ち受け時割り込みによるInterruptedExceptionのハンドリングにより、
    // 割り込み状態が発生していないこと
    assertFalse(Thread.currentThread().isInterrupted());
    // 割り込み発生によりシャットダウン後の待ち合わせが行われていない。
    // ⇒ログにINFOログが1度だけ出力されていること。
    assertThat(logger.getLoggingEvents().size(), is(1));
    assertThat(logger.getLoggingEvents(), is(asList(info(
            "[IAL025020] Waiting to shutdown all tasks in ThreadPoolTaskExecutor."))));
}