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

时间:2019-04-18 14:05:52

标签: java junit temporary-files

我正在尝试向TemporaryFolder创建的文件写入一些字符串。 我需要提供3个字符串: Line1 a Line2 b c Line 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)我读到该文件夹​​将被自动删除,因此我不需要对.deleteOnExit()执行textFile吗?

1 个答案:

答案 0 :(得分:0)

我看到两个问题:

  1. 您使用文件名而不是文件本身打开FileWriter对象
  2. 您没有关闭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();
  }