### Question:
TransactionInvokerImpl implements TransactionInvoker,TransactionChainListener, Runnable, AutoCloseable { @Override public void close() throws InterruptedException { this.executor.shutdown(); synchronized (this) { this.chain.close(); } if (!this.executor.awaitTermination(1, TimeUnit.SECONDS)) { runTask.set(false); this.executor.shutdownNow(); } } TransactionInvokerImpl(final DataBroker db); @VisibleForTesting  TransactionInvokerImpl(final DataBroker db, final ExecutorService executor); @VisibleForTesting  TransactionInvokerImpl(final DataBroker db,
            final List<Entry<ReadWriteTransaction, TransactionCommand>> pendingTransactions,
            final List<ReadWriteTransaction> failedTransactions); @VisibleForTesting  TransactionInvokerImpl(final DataBroker db,
            final List<Entry<ReadWriteTransaction, TransactionCommand>> pendingTransactions); @Override void invoke(final TransactionCommand command); @Override void onTransactionChainFailed(final TransactionChain chainArg,
            final Transaction transaction, final Throwable cause); @Override void onTransactionChainSuccessful(final TransactionChain chainArg); @Override void run(); @Override void close();  }### Answer:
@Test public void testClose() throws InterruptedException { final ExecutorService executor = mock(ExecutorService.class); doNothing().when(executor).shutdown(); try (TransactionInvokerImpl invoker = new TransactionInvokerImpl(db, executor)) { } verify(executor).shutdown(); }