2008-09-23 41 views
19

我们的Java代码(不是测试代码)从当前目录读取文件,这意味着无论何时运行代码,都需要正确设置工作目录。如何在Eclipse中为JUnit启动配置默认工作目录?

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

我已经考虑过这些:

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

总而言之,它看起来像是Eclipse的责任,而不是代码。

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

回答

9

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

但是,它可能在IDEA中。有一个按钮,用于分别为每个启动配置类型设置各种默认设置。

+0

也许更多的人也可以解决这个问题。我在这里请求了一个功能请求 - https://sourceforge.net/tracker/?group_id=156007&atid=798059。 – studgeek 2012-11-27 17:21:56

11

这是一个主观的答案:

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

我不确定这是不是你的意思,但如果你真的想改变它,去运行配置选项 - >你的JUnit - >参数选项卡,在底部(Eclipse 3.4)你看到工作目录,点击'other'并从那里改变它。

+0

如果你想将CWD设置为“target/my-test-loc”但目标不存在,该怎么办? – dwjohnston 2017-02-02 21:27:25

1

我还没有找到一个可能做到这一点,但你可以做的是使用:

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

getClass()。getClassLoader()。getResourceAsStream(filename);

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

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

1

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

如果您有大部分测试的超类,请在其中写入一个常量。 或者:如果您有大部分测试的超类,请编写@Before设置方法。或者:如果您的大多数测试没有超类,请在某些类的测试代码库中编写一个常量。

2

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

相关问题