Verwenden doReturn teilweise mock-statische Methode mit PowerMockito

Wie ich die doReturn Muster in PowerMockito zu verspotten, eine statische Methode, wenn ich nicht verwenden können, Mockito.wenn()?

Möchte ich zum testen die folgende statische Methode:

public static PrintWriter openWriter(File file, Charset charset, boolean autoflush) throws FileNotFoundException {
      return openWriterHelper(new FileOutputStream(file), charset, autoflush);
   }

Dies ist mein testMethod:

@Test
public void testOpenWriter_file_charset_autoflush() throws Throwable {
      Charset charset = mock(Charset.class);
      PrintWriter expected = mock(PrintWriter.class);
      File file = mock(File.class);
      FileOutputStream fos = mock(FileOutputStream.class);

      spy(IOHelper.class);
      whenNew(FileOutputStream.class).withArguments(file).thenReturn(fos);
      when(IOHelper.openWriterHelper(fos, charset, true)).thenReturn(expected);

      PrintWriter observed = IOHelper.openWriter(file, charset, true);
      assertEquals(expected, observed);

      verifyStatic();
      IOHelper.openWriterHelper(fos, charset, true);

}

Das problem ist, dass ich kann nicht openWriterHelper in einem Aufruf, wenn, weil die Methode eine Ausnahme auslösen, wenn übergeben, ein mock-Ausgabestrom.

Wenn es darauf ankommt, dies ist der code für openWriterHelper:

public static PrintWriter openWriterHelper(OutputStream stream, Charset charset,
                                    boolean autoflush) {
  return new PrintWriter(new java.io.BufferedWriter(
        new java.io.OutputStreamWriter(stream, charset)), autoflush);

}

InformationsquelleAutor Zack | 2011-09-12
Schreibe einen Kommentar