为什么我不能在junit测试中写入文件?

ct3nt3jp  于 2022-11-11  发布在  其他
关注(0)|答案(1)|浏览(80)

我有一个目录,里面有一些文件。
我有一个junit测试套件,用于测试写入、编辑和删除这些文件的一些操作
我希望在运行测试之前保存文件的内容,并在运行测试之后恢复这些内容。
我尝试通过在测试运行之前将文件复制到另一个目录并在测试运行之后将它们复制回来来实现这一点。
所以我在一个@beforeClass测试方法中使用了以下代码:

File repDir = new File("/home/hamster339/Documents/Projects/Piping_Tune_List/Repertoire");
    if (repDir.exists()){
        for (File f: Objects.requireNonNull(repDir.listFiles())) {
            Scanner r = new Scanner(f);
            FileWriter w = new FileWriter(String.format("/home/hamster339/Documents/Projects/Piping_Tune_List/temp/%s",f.getName()));
            while (r.hasNextLine()){
                w.write(r.nextLine());
            }
            w.close();
            r.close();
        }
    }

但是,这会产生以下错误:

java.io.FileNotFoundException: /home/hamster339/Documents/Projects/Piping_Tune_List/temp/Learnt.prl (No such file or directory)

据我所知,这个错误表明我没有写权限。如果文件不存在,.write()应该创建一个新文件。
使用File.canwrite()通过返回false来确认这一点。
写在主程序中工作得很好,我也能够创建新的目录,只是不写或创建文件。
所以我的问题是,为什么我不能在测试中写入文件,而它在主代码中工作得很好?

tgabmvqs

tgabmvqs1#

看起来我只需要在我试图在其中写入文件之前创建新的目录。愚蠢的错误。

相关问题