我正在尝试模拟 FileInputStream 的构造函数,并且我有以下代码:
@RunWith(PowerMockRunner.class)
@PrepareForTest(FileInputStream.class)
public class DBUtilsTest {
@Test(expected = FileNotFoundException.class)
public void readTableMetadataFileNotFoundException() throws Exception {
try {
PowerMockito.whenNew(FileInputStream.class)
.withParameterTypes(String.class)
.withArguments(Matchers.any(String.class))
.thenThrow(FileNotFoundException.class);
PowerMock.replayAll();
TableMetadata tableMeta = DBUtils
.readTableMetadata(path);
} finally {
PowerMock.verifyAll();
}
}
}
public class DBUtils {
public static TableMetadata readTableMetadata(String metadataPath)
throws FileNotFoundException, IOException {
Properties properties = new Properties();
FileInputStream is = new FileInputStream(metadataPath);
properties.load(is);
.....
}
}
虽然,测试失败了java.lang.AssertionError: Expected exception: java.io.FileNotFoundException
似乎构造函数并没有真正被模拟,并且没有抛出异常。任何人都可以为这个问题提供任何帮助吗?