message: [test] Throw error instead of segfaulting in failure scenario
  If the miner code is faulty and does not include any transactions in a block,
  the code segfaults when it tries to access block transactions. Instead, add a
  check that safely aborts the process.
diff: @@ -120,6 +120,7 @@ void MinerTestingSetup::TestPackageSelection(const CChainParams& chainparams, co
  m_node.mempool->addUnchecked(entry.Fee(50000).Time(GetTime()).SpendsCoinbase(false).FromTx(tx));
  std::unique_ptr<CBlockTemplate> pblocktemplate = AssemblerForTest(chainparams).CreateNewBlock(scriptPubKey);
  + BOOST_REQUIRE_EQUAL(pblocktemplate->block.vtx.size(), 4);
  BOOST_CHECK(pblocktemplate->block.vtx[1]->GetHash() == hashParentTx);
  BOOST_CHECK(pblocktemplate->block.vtx[2]->GetHash() == hashHighFeeTx);
  BOOST_CHECK(pblocktemplate->block.vtx[3]->GetHash() == hashMediumFeeTx);
  @@ -154,6 +155,7 @@ void MinerTestingSetup::TestPackageSelection(const CChainParams& chainparams, co
  hashLowFeeTx = tx.GetHash();
  m_node.mempool->addUnchecked(entry.Fee(feeToUse+2).FromTx(tx));
  pblocktemplate = AssemblerForTest(chainparams).CreateNewBlock(scriptPubKey);
  + BOOST_REQUIRE_EQUAL(pblocktemplate->block.vtx.size(), 6);
  BOOST_CHECK(pblocktemplate->block.vtx[4]->GetHash() == hashFreeTx);
  BOOST_CHECK(pblocktemplate->block.vtx[5]->GetHash() == hashLowFeeTx);
  @@ -188,6 +190,7 @@ void MinerTestingSetup::TestPackageSelection(const CChainParams& chainparams, co
  tx.vout[0].nValue = 100000000 - 10000; // 10k satoshi fee
  m_node.mempool->addUnchecked(entry.Fee(10000).FromTx(tx));
  pblocktemplate = AssemblerForTest(chainparams).CreateNewBlock(scriptPubKey);
  + BOOST_REQUIRE_EQUAL(pblocktemplate->block.vtx.size(), 9);
  BOOST_CHECK(pblocktemplate->block.vtx[8]->GetHash() == hashLowFeeTx2);
  }
  