### Question:
TransactionInvokerImpl implements TransactionInvoker,TransactionChainListener, Runnable, AutoCloseable { @VisibleForTesting List<TransactionCommand> extractCommands() throws InterruptedException { List<TransactionCommand> commands = extractResubmitCommands(); commands.addAll(extractCommandsFromQueue()); return commands; } 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 testExtractCommands() throws InterruptedException { final TransactionInvokerImpl invoker = new TransactionInvokerImpl(db, Collections.emptyList()); final TransactionCommand command = mock(TransactionCommand.class); invoker.invoke(command); assertEquals(Collections.singletonList(command), invoker.extractCommands()); }