如何在 try-with-resource 块中模拟变量

How to mock variables in try-with-resource blocks

我目前正在使用 junit-4.12mockito-1.10。我正在尝试将模拟注入 try-with-resource 块,例如

try (InputStream inputStream = new FileInputStream("inputFile.txt") {
    ...
}

有什么方法可以为 inputStream 注入 mock 吗?我试过在 try 块之外声明 inputStream 如下:

InputStream inputStream;
try (inputStream = new FileInputStream("inputFile.txt") {
    ...
}

然而,Java 不喜欢这样并抛出错误。

如有必要,我愿意使用任何其他库,我们将不胜感激!

谢谢。

应该这样做:

使用PowerMockito

import static org.powermock.api.mockito.PowerMockito.whenNew;

 // ...
InputStream inputStreamMock = mock(InputStream.class);
whenNew(FileInputStream.class).withArguments("inputFile.txt").thenReturn(inputStreamMock);