0

使用 JUnit 时,我们将用于记录的目录作为 JVM 属性传递。这在命令行和 Eclipse 中运行良好。但是,当我们将相同的属性传递给 Buildr 测试任务时,它就不起作用了。

test.using :properties => { :"server.name" => "tester", :"log.dir" => log_dir}

我们知道为什么会发生这种情况。该属性是从 JVM 内部而不是外部设置的。这意味着在运行时(加载静态日志记录类时)该属性尚未设置。如果我们稍后查询该属性(例如在单元测试中),那么我们会看到它设置正确。

有谁知道解决方法?

顺便说一句,我们使用的是 log4J,但这个问题适用于任何需要访问 Buildr 设置的 JVM 属性的静态类。

4

2 回答 2

0

假设您使用的是 JUnit,您可以通过以下方式确保测试在分叉的 JVM 中运行

test.using :fork => :once

但是我认为这是默认行为?你是否以某种方式覆盖它?(见 http://buildr.apache.org/languages.html

于 2013-02-02T17:44:11.687 回答
0

代码在 log4j.properties 文件中定义 log.dir 并将其设置在 buildfile 通过

test.using :properties => { :"log.dir" => '/tmp'}

我的设置是

  • 建造者 1.4.7
  • 红宝石 1.9.3

hth

于 2013-08-09T10:37:37.977 回答