4

次のテスト コードを使用して、java.nio.file.Files からpublic static 関数readAllBytesをスタブしたいと考えています。

@PrepareForTest(Files.class)
public void testGetNotExistingRestFile() throws Exception {
    PowerMockito.mockStatic(Files.class);
    PowerMockito.doThrow(mock(IOException.class)).when(Files.readAllBytes(any(Path.class)));
}

NullPointerException がスローされるたびに、何が間違っているのかを理解できます。

java.lang.NullPointerException
at java.nio.file.Files.provider(Files.java:67)
at java.nio.file.Files.newByteChannel(Files.java:317)
at java.nio.file.Files.newByteChannel(Files.java:363)
at java.nio.file.Files.readAllBytes(Files.java:2981)
at nl.mooij.bob.RestFileProviderTest.testGetNotExistingRestFile(RestFileProviderTest.java:53)

PowerMockito を使用して java.nio.file.Files から関数readAllBytesをスタブするにはどうすればよいですか?

4

3 に答える 3

3

PowerMockito の代わりに Mockito を呼び出し、スタブの順序を逆にします。

@Test(expected=IOException.class)
@PrepareForTest(Files.class)
public void testGetNotExistingRestFile() throws Exception {
    // arrange
     PowerMockito.mockStatic(Files.class);
     Mockito.when(Files.readAllBytes(Matchers.any(Path.class))).thenThrow(Mockito.mock(IOException.class));
    // act
     Files.readAllBytes(Mockito.mock(Path.class));
}

別の可能性は次のとおりです。

   @Test(expected=IOException.class)
   @PrepareForTest(Files.class)
   public void testGetNotExistingRestFile() throws Exception {
     // arrange
       PowerMockito.mockStatic(Files.class);
       Files filesMock = PowerMockito.mock(Files.class);
       Mockito.when(filesMock.readAllBytes(Matchers.any(Path.class))).thenThrow(Mockito.mock(IOException.class));
     // act   
       filesMock.readAllBytes(Mockito.mock(Path.class));
   }

参照: PowerMockito を使用して最終メソッドと静的メソッドをモックする

于 2015-09-18T02:26:54.093 に答える