gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 20:27:49 35 4
gpt4 key购买 nike

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

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

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

更新:我实际上想要测试完成后的文件。该文件用于需要发送给第三方的第三方提取格式。可以打开/关闭测试,以便我仅在文件格式更改以重新批准时运行。文件的去向不是什么大问题,但我想要一些容易找到的东西。

最佳答案

您可以尝试使用 TemporaryFolder JUnit @Rule 如所述here

The TemporaryFolder 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 进行单元测试期间写入临时文件的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12400243/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com