JUnit的Buildr JVM属性设置在JVM内部而不是外部

时间:2013-02-02 16:52:19

标签: properties junit jvm buildr

使用JUnit时,我们将用于记录的目录作为JVM属性传递。这在命令行和Eclipse中都可以正常工作。但是,当我们将相同的属性传递给Buildr测试任务时,它不起作用。

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

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

有没有人知道解决方法?

BTW,我们使用的是log4J,但问题适用于需要访问Buildr设置的JVM属性的任何静态类。

2 个答案:

答案 0 :(得分:0)

假设您正在使用JUnit,您可以确保测试通过分叉的JVM运行

test.using :fork => :once

但是我认为这是默认行为?你是否以某种方式凌驾于此? (见http://buildr.apache.org/languages.html

答案 1 :(得分:0)

这个code定义了log4j.properties文件中的log.dir,并通过

在构建文件中设置它。
test.using :properties => { :"log.dir" => '/tmp'}

我的设置是

  • buildr 1.4.7
  • ruby​​ 1.9.3

HTH