### Question:
SendToSolrCloudProcessor extends BatchProcessor<SolrInputDocument> implements DocumentProcessor { @Override protected void perDocFailLogging(Exception e, Document doc) { log().info(Status.ERROR.getMarker(), "{} could not be sent to solr because of {}", doc.getId(), e.getMessage()); log().error("Error communicating with solr!", e); } protected  SendToSolrCloudProcessor(); Logger log(); @Override boolean hasExternalSideEffects(); @Override String getName(); @Override void close();  }### Answer:
@Test public void testPerDocumentFailure() { Set<Document> documents = new HashSet<>(); documents.add(docMock); expect(batchMock.keySet()).andReturn(documents); RuntimeException e = new RuntimeException("TEST EXCEPTION"); proc.putIdInThreadContext(docMock); proc.perDocFailLogging(e, docMock); replay(); proc.perDocumentFailure(batchMock, e); }