java – 在使用Maven进行单元测试期间,写入temp文件的正确方法是什么?

我写了一个单元测试,写一个文件到文件系统,给定没有路径写入工作目录;所以如果从项目目录执行它写入项目根目录,如果在项目的父目录中它写入父根目录。

那么,什么是正确的方式写入目标目录?可能是目标目录中的目录?

如果我相当简单地指定target /与文件,它将写入父项目目标而不是项目目标。

更新:我实际上想要测试完成后的文件。该文件用于需要发送给第三方的第三方的提取格式。测试可以打开/关闭,以允许我只运行,如果文件的格式更改为重新批准。这不是一个大问题的文件,但我想要一个很容易找到的东西。

最佳答案
您可以尝试使用TemporaryFolder JUnit @Rule,如here所述

The 07000 creates a folder in the default temporary file directory specified by the system property java.io.tmpdir. The method newFile creates a new file in the temporary directory and newFolder creates a new folder.

When the test method finishes, JUnit automatically deletes all files and directories in and including the TemporaryFolder. JUnit guarantees to delete the resources, whether the test passes or fails.

后问题更新

您可以更改maven-surefire-plugin使用的工作目录。

<plugins>
    [...]
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.12.3</version>
        <configuration>
          <workingDirectory>${project.build.directory}</workingDirectory>
        </configuration>
      </plugin>
    [...]
</plugins>

您可以将工作目录更改为测试所需的任何内容,例如$ {project.build.directory} / my_special_dir /。

surefire插件中的工作目录仅影响正在运行的测试,并且仅影响由maven执行的测试。如果你在IDE中运行测试,工作目录将是别的东西。

转载注明原文:java – 在使用Maven进行单元测试期间,写入temp文件的正确方法是什么? - 代码日志