### Question:
EthHashMinerExecutor extends AbstractMinerExecutor<EthHashBlockMiner> { @Override public Optional<EthHashBlockMiner> startAsyncMining( final Subscribers<MinedBlockObserver> observers, final Subscribers<EthHashObserver> ethHashObservers, final BlockHeader parentHeader) { if (coinbase.isEmpty()) { throw new CoinbaseNotSetException("Unable to start mining without a coinbase."); } return super.startAsyncMining(observers, ethHashObservers, parentHeader); } EthHashMinerExecutor(
      final ProtocolContext protocolContext,
      final ProtocolSchedule protocolSchedule,
      final PendingTransactions pendingTransactions,
      final MiningParameters miningParams,
      final AbstractBlockScheduler blockScheduler,
      final GasLimitCalculator gasLimitCalculator); @Override Optional<EthHashBlockMiner> startAsyncMining(
      final Subscribers<MinedBlockObserver> observers,
      final Subscribers<EthHashObserver> ethHashObservers,
      final BlockHeader parentHeader); @Override EthHashBlockMiner createMiner(
      final Subscribers<MinedBlockObserver> observers,
      final Subscribers<EthHashObserver> ethHashObservers,
      final BlockHeader parentHeader); void setCoinbase(final Address coinbase); @Override Optional<Address> getCoinbase();  }### Answer:
@Test public void startingMiningWithoutCoinbaseThrowsException() { final MiningParameters miningParameters = new MiningParametersTestBuilder().coinbase(null).build(); final PendingTransactions pendingTransactions = new PendingTransactions( TransactionPoolConfiguration.DEFAULT_TX_RETENTION_HOURS, 1, 5, TestClock.fixed(), metricsSystem, () -> null, Optional.empty(), TransactionPoolConfiguration.DEFAULT_PRICE_BUMP); final EthHashMinerExecutor executor = new EthHashMinerExecutor( null, null, pendingTransactions, miningParameters, new DefaultBlockScheduler(1, 10, TestClock.fixed()), GasLimitCalculator.constant()); assertThatExceptionOfType(CoinbaseNotSetException.class) .isThrownBy(() -> executor.startAsyncMining(Subscribers.create(), Subscribers.none(), null)) .withMessageContaining("Unable to start mining without a coinbase."); }