java - 如何将 junit TemporaryFolder 的位置设置为环境变量

标签 java eclipse

我正在使用 junit 的 TemporaryFolder 来测试我的应用程序中处理文件系统的部分。是否可以将 junit 变量 java.io.tmpdir 设置为运行配置中的环境变量?

最佳答案

根据我们长期的讨论,我现在明白您问的是:

How to configure JUnit so it uses a specific folder for creating the temporary files.

(如果我正确地理解了您的问题,请进行相应的编辑并更改标题。)

JUnit 4.11+

最简单的方法是使用新的构造函数 TemporaryFolder(File parentFolder) 。这是首选方式。

JUnit<4.11

您知道org.junit.rules.TemporaryFolder使用系统属性java.io.tmpdir。实际上,当你查看源代码时,它在内部使用 File.createTempFile(prefix, suffix)使用此系统属性的方法。

您可以在这里找到详尽的信息:Environment variable to control java.io.tmpdir?

有关系统属性和环境变量的更一般信息:Java system properties and environment variables

但是,你应该注意到Java-doc中的这句话。 :

A different value may be given to this system property when the Java virtual machine is invoked, but programmatic changes to this property are not guaranteed to have any effect upon the temporary directory used by this method.

如果您想确保临时文件夹始终处于您的控制之下,您可以create your own org.junit.rules.TemporaryFolder 的版本 - 这并不难,你只需使用 File.createTempFile(prefix, suffix, directory)显式分配第三个参数目录

关于java - 如何将 junit TemporaryFolder 的位置设置为环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23659408/

相关文章:

java - Maven 似乎没有下载整个 jar

java - Jsoup 选择器 - 如何选择 <div> 元素内的前 5 个 <p> 元素

java - 如何使用java程序设置IBM MQ的消息ID

java - 为什么我的 run() 方法没有从我的 Actionlistener 中正确调用

java - 无法在 eclipse 中突出显示文本/变量

Java EE : Can't create ear project in eclipse using Tomee

java - 如何在 JavaFX 中将任何组件的尺寸绑定(bind)到父容器?

java - 什么时候使用java bean?

java - 如何在 UML 中表示 Java 集合值属性?

java - 编译器不会让 String 变量出现在 switch 语句中