这可能吗?我想要一个文件存在,但是当我尝试读取它时,我希望读取($ /home/jason/bourne;
a
b
c d
)以抛出IOException。这样我就可以对某些功能进行单元测试,因此只需要通过JUnit测试即可。我以为我可以让它不可读,但这似乎不起作用:
Files.readAllBytes(filePath)
修改:我还尝试了this SO post中的解决方案,但它们也无效。
/**
* Should throw a IOException
*/
@Test
public void myTest() throws Exception {
File inputFile = createTempFile("test");
String args[] = {"-l", "-i", "--", "One", "Two", "--", inputFile.getPath()};
Runtime.getRuntime().exec("chmod 777 " + inputFile.getPath());
File file = new File(inputFile.getPath());
file.setExecutable(false);
Main.main(args);
assertEquals("Error", errStream.toString().trim());
}
当我在调试器中运行它时,我希望看到它在读取时遇到IOException,但它会正确读取文件。
以下是我创建临时文件的方法(在createTempFile中)
final RandomAccessFile raFile = new RandomAccessFile(inputFile.getPath(), "rw");
raFile.getChannel().lock();
String args[] = {"-l", "-i", "--", "One", "Two", "--", inputFile.getPath()};
Main.main(args);