【问题标题】:How to default the working directory for JUnit launch configurations in Eclipse?如何在 Eclipse 中默认 JUnit 启动配置的工作目录?
【发布时间】:2010-09-12 07:12:31
【问题描述】:

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

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

我已经考虑过这些:

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

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

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

【问题讨论】:

    标签: java eclipse junit eclipse-3.4


    【解决方案1】:

    这是一个主观的答案:

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

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

    【讨论】:

    • 如果您想将 CWD 设置为 target/my-test-loctarget 尚不存在怎么办?
    【解决方案2】:

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

    getClass().getResourceAsStream(文件名);

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-09-18
          • 2011-03-06
          • 2012-03-23
          • 2019-10-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多