有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将临时文件夹传递给以文件为参数的方法(JUNIT)

我有一个将File作为参数的方法,我想使用@Rules temporaryFolder对其进行junit测试

以下是我的方法:

    public void processFiles(final File folder)
    {
        
        File[] fileNames = folder.listFiles();
        List<String> lines = new ArrayList<>();
        boolean isFirstFile = true;
        try
        {
            for (File file : fileNames)
            {
                    List<String> list = readContent(file);
                    list.forEach(i -> lines.add(i));
                     
                }
        }catch (IOException e)
        {
            e.printStackTrace();
        }
    }

下面是我想测试它的方法:

 @Rule
 public TemporaryFolder folder = new TemporaryFolder();

 @Test
 public void test() throws IOException {
        
        final File tempFile = temporaryFolder.newFile("tempFile.txt");
        final File tempFile2 = temporaryFolder.newFile("tempFile.txt");
     

        FileUtils.writeStringToFile(tempFile, "content1", "ISO-8859-1");
        
        FileUtils.writeStringToFile(tempFile2, "content2", "ISO-8859-1");
        
        
         //Here I get an error because the parameter should be of type File and not TemporaryFolder 
        listFilesService.processFiles (temporaryFolder);
      
    }

你能帮我正确地编写代码吗 非常感谢


共 (1) 个答案

  1. # 1 楼答案

    您应该使用TemporaryFolder.getRoot()方法。那么,你的测试将是:

    @Rule
    public TemporaryFolder temporaryFolder = new TemporaryFolder();
    
    @Test
    public void test() throws IOException {
    
        final File tempFile = temporaryFolder.newFile("tempFile.txt");
        final File tempFile2 = temporaryFolder.newFile("tempFile2.txt");
    
    
        FileUtils.writeStringToFile(tempFile, "content1", "ISO-8859-1");
    
        FileUtils.writeStringToFile(tempFile2, "content2", "ISO-8859-1");
    
    
        // Pass the root of the TemporaryFolder which is of type File
        processFiles(temporaryFolder.getRoot());
    
    }
    

    这可以通过在processFilesfor循环中添加System.out.println(file.getName());来验证是否有效。上述测试的输出为:

    tempFile.txt
    tempFile2.txt