如何在Eclipse中默认JUnit启动配置的工作目录?

时间:2008-09-23 08:26:32

标签: java eclipse junit eclipse-3.4

我们的Java代码(不是测试代码)从当前目录中读取文件,这意味着每当我们运行代码时都需要正确设置工作目录。

从Eclipse中启动JUnit测试时,会自动创建启动配置。问题是,该启动配置中的工作目录始终默认为根项目目录,这总是错误的,测试失败,我必须打开启动配置对话框,更改工作目录并重新启动测试。这非常烦人。当我运行单一测试方法时会发生同样的事情。

我已经考虑过这些了:

  • 从测试代码更改当前目录 - 设计无法实现。
  • 打开文件时,传递父目录参数 - 太难了,因为这会影响很多地方。
  • 使用Eclipse的复制启动配置功能,从已具有正确工作目录集的现有配置创建新的启动配置。这在这里没有意义,因为我想快速启动测试或测试方法,只需调用“将此测试/方法作为JUnit测试运行”。

总而言之,它似乎是Eclipse的责任,而不是代码。

有没有办法为所有未来的,新创建的 JUnit启动配置设置默认工作目录?

5 个答案:

答案 0 :(得分:11)

这是一个主观的答案:

我相信你的测试是错误的,你不应该使用相对或完整路径从JUnit加载文件,而是将它们作为项目中的资源(将它们添加到构建路径)并加载它们作为JUnit测试中的资源。这样,如果文件系统上的某些内容发生了变化,有人会使用不同的文件系统或IDE,但仍然会在构建路径中使用它们(作为源文件夹),您将不会遇到问题。

我不确定这是不是您的意思,但如果您真的想要更改它,请转到运行配置选项 - >你的JUnit - >参数选项卡,在底部(Eclipse 3.4),您可以看到工作目录,单击“其他”并从那里进行更改。

答案 1 :(得分:9)

据我所知,在Eclipse 3.4中,无法更改未来JUnit启动配置的默认工作目录。这个问题在Eclipse bug数据库中也是reported as a bug

然而,在IDEA中是可能的。有编辑默认值按钮,用于分别为每个启动配置类型设置各种默认值。

答案 2 :(得分:3)

使用Eclipse 3,您可以设置工作目录。转到运行/调试配置 - >参数选项卡。在工作目录中选择“其他”并输入测试的根

答案 3 :(得分:1)

我没有找到这样做的可能性,但你可以做的是使用:

的getClass()的getResourceAsStream(文件名);

的getClass()getClassLoader()的getResourceAsStream(文件名);

此方法在类路径上查找资源。 第一个是相对于类的位置,第二个是相对于任何类路径“根条目”。然后,您可以将项目根目录添加到类路径中。

但是,如果您还要写入文件,则不起作用。

答案 4 :(得分:1)

如果你的测试依赖于当前的工作目录,我认为测试的责任是正确设置工作目录,并配置要测试的类以指向该目录。

如果您的大多数测试都有超类,请在其中写一个常量。 或者:如果您的大多数测试都有超类,请编写@Before安装方法。 或者:如果你的大多数测试都没有超类,那么在测试代码库的某个类中写一个常量。