Java测试:当我尝试读取它时,导致文件抛出IOException

时间:2016-12-01 03:23:20

标签: java unit-testing junit

这可能吗?我想要一个文件存在,但是当我尝试读取它时,我希望读取($ /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);

0 个答案:

没有答案