【问题标题】:Specifying a custom log4j.properties file for all of JUnit tests run from Eclipse为从 Eclipse 运行的所有 JUnit 测试指定自定义 log4j.properties 文件
【发布时间】:2014-08-05 13:47:30
【问题描述】:

我想为我从 Eclipse 运行的所有 JUnit 测试指定一个特定的 Eclipse VM argument,即

-Dlog4j.configuration=log4j-dev.properties

这是因为我希望我的所有 JUnit 测试都使用一个特定的 log4j 配置文件,而不是默认的 log4j.properties 文件。

到目前为止,我必须为我的每个 JUnit 测试指定上述 VM argument(在 Run Configurations -> Arguments -> VM arguments 中),这使得它很麻烦,因为我有很多测试。

【问题讨论】:

标签: eclipse junit log4j


【解决方案1】:

Eclipse 使您能够定义默认 VM 参数,这些参数应用于使用该 VM 的任何启动。您可以在您的情况下使用它,方法是使用您想要用于 log4j 的 VM 参数定义 JRE 配置,然后设置所有 JUnit 启动以使用该 JRE 定义。

在 Preferences 中,Java > Installed JREs 并使用 Add... 按钮定义 JRE。在 JRE 定义 对话框中有一个用于默认 VM 参数 的字段。给这个 JRE 定义一个有用的名称,例如“JDK 7 for JUnit”,以便您轻松识别它。

然后在您的 JUnit 启动中,在 JRE 选项卡上,选择您创建的 JRE 定义。

【讨论】:

  • 非常感谢 E-Riz:您建议的解决方案也很棒。 +1。
【解决方案2】:

您不需要为 JVM 指定不同的属性名称。日志记录代码使用类路径搜索log4j.properties 文件。因此,您需要做的就是确保您的测试 log4j.properties 文件位于它可以在发布文件之前找到 的位置。

我使用 Maven,它将文件布置在目录中以简化操作。我的版本log4j.properties 进入目录src/main/resources。我的测试版本进入src/test/resources。 Eclipse 构建路径(类路径)设置为在src/main/resources 之前搜索src/test/resources,因此您的单元测试使用测试文件。 JAR(或 WAR)构建指令使用来自 src/main/resources 的文件。

【讨论】:

  • 非常整洁:我不知道类路径中的第一个 log4j.properties 文件被 log4j 使用。非常感谢。它也适用于命令行 maven,这很棒。
  • 非常好的解决方案。我想知道是否可以直接通过 maven 设置订单。这样我的开发人员在导入/重新导入项目时就不需要做这个配置了。
  • 注意:如果您在 Eclipse 中难以创建 src/test/resources 目录,这是因为 Eclipse 认为标准 Maven 目录在某些情况下会自动存在,但会检查它们是否存在真的存在于别人身上。手动创建目录,然后关闭并重新打开 Eclipse 项目,它应该会按预期出现在项目的“Java 资源”树中。
猜你喜欢
  • 1970-01-01
  • 2015-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-03
  • 2013-02-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多