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

时间:2016-05-26 21:01:40

标签: java unit-testing junit mocking mockito

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

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

有没有办法可以为inputStream注入模拟?我已尝试在inputStream块之外声明try,如下所示:

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

但是,Java不喜欢这样并抛出错误。

如果必须,我愿意使用任何其他图书馆,我们将不胜感激任何帮助!

感谢。

1 个答案:

答案 0 :(得分:2)

这应该这样做:

使用PowerMockito

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

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