23

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

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

我已经考虑过这些:

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

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

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

4

5 回答 5

11

这是一个主观的答案:

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

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

于 2008-09-23T08:48:17.920 回答
10

据我所知,在 Eclipse 3.4 中无法更改未来 JUnit 启动配置的默认工作目录。此问题也已报告为Eclipse 错误数据库中的错误。

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

于 2008-10-13T16:07:41.227 回答
3

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

于 2009-02-03T13:57:29.687 回答
1

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

getClass().getResourceAsStream(文件名);

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

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

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

于 2008-09-23T08:53:50.137 回答
1

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

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

于 2008-09-23T09:01:08.873 回答