junit 将内容写入TemporaryFolder并在测试后删除文件

de90aj5v  于 2022-12-23  发布在  其他
关注(0)|答案(2)|浏览(122)

我试图写一些字符串到临时文件夹创建的文件。我需要提供3字符串:第一个月
1)我做了这个,但是它没有增加任何东西。testedContent的长度仍然是0。我做错了什么?:

private ContentFileRetriever contentFileRetriever = new ContentFileRetrieverService();

    @Rule
    public TemporaryFolder tempFolder = new TemporaryFolder();

    @Before
    public void setup() {
    }

    @Test
    public void getContentFile() throws IOException {
        File textFile = tempFolder.newFile("testText.txt");
        String pathFile = textFile.getPath();
        FileWriter fileWriter = new FileWriter(textFile.getName());
        fileWriter.write("Line1 a");
        fileWriter.write("Line2 b c");
        fileWriter.write("Line3 3");
        String[] testedContent = contentFileRetriever.getContentFile(pathFile);
        String[] expected = {"Line1 a", "Line2 b c", "Line 3"};
        assertArrayEquals(expected, testedContent);
    }

2)我应该在设置中使用@Before方法还是在测试中进行?
3)我读到这个文件夹将被自动删除,所以我不需要在textFile上执行.deleteOnExit()

1rhkuytd

1rhkuytd1#

我看到两个问题:
1.使用文件名而不是文件本身打开FileWriter对象
1.不关闭FileWriter
这对我很有效:

@Test
  public void getContentFile() throws IOException {
    File textFile = tempFolder.newFile("testText.txt");
    FileWriter fileWriter = new FileWriter(textFile);
    fileWriter.write("Line1 a");
    fileWriter.write("Line2 b c");
    fileWriter.write("Line3 3");
    fileWriter.close();
  }
fykwrbwg

fykwrbwg2#

必须在创建FileWriter的行中将textFile.getName() 更改为textFile.getPath(),如下所示:

  • 来自 *
  • 文件写入器=新建文件写入器(textFile.getName());
  • 致 *
  • 文件写入器=新建文件写入器(文本文件.***getPath()***);

相关问题