Welche unterschiedlichen Möglichkeiten könnte ich testen, um die IOException abzufangen?Komponententest IOException
@Override
public void renderOriginalContent(final Document document, final OutputStream outputStream, final User user)
{
if (Hibernate.isInitialized(document.getOriginalContent()))
{
try (final InputStream contentIS = document.getOriginalContent().getInputStream();
final BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream))
{
final byte[] buffer = new byte[4096];
int read = contentIS.read(buffer);
while (read != -1)
{
bufferedOutputStream.write(buffer, 0, read);
read = contentIS.read(buffer);
}
logDocumentAccessEvent(user, document);
}
catch (final IOException e)
{
throw new RuntimeException(e);
}
}
else
{
renderOriginalContent(document.getId(), outputStream, user);
}
}
Ich habe eine generische Testmethode, die ich geändert habe, um zu versuchen, die IOException ausgelöst zu bekommen. Hat jemand irgendwelche Antworten, wie man die IOException erwischt?
@Test
public void testRenderOriginalContentWithDocument() throws Exception
{
final TestDocumentController documentService = EJBs.get(TestDocumentController.class);
final User user = Tests.getUser();
final Document document = Tests.getDocument();
final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
try
{
documentService.renderOriginalContent(document, outputStream, user);
}
catch (Exception e)
{
Assert.assertTrue(e.getCause() instanceof IOException);
}
}
Wie wäre es mit [Mockito] (http://site.mockito.org/)? – Thibstars
Hinweis: Wenn Sie im obigen Test eine Ausnahme nicht auslösen, wird Ihr Test bestanden. Zumindest würde ich eine fail() -Anweisung in Ihrem try-Block verwenden –