Свойства JVM Buildr для JUnit, установленные внутри JVM, а не снаружи

При использовании JUnit мы передаем каталог, используемый для ведения журнала, как свойство JVM. Это отлично работает в командной строке и в Eclipse. Однако это не работает, когда мы передаем то же свойство тестовой задаче Buildr.

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

Мы знаем, почему это происходит. Свойство устанавливается внутри JVM, а не снаружи. Это означает, что во время выполнения (когда загружается статический класс ведения журнала) свойство еще не установлено. Если мы запросим свойство позже (скажем, из модульного теста), то увидим, что оно задано правильно.

Кто-нибудь знает обходной путь?

Кстати, мы используем log4J, но этот вопрос применим к любому статическому классу, которому требуется доступ к свойству JVM, установленному Buildr.


person David Semeria    schedule 02.02.2013    source источник


Ответы (2)


Предполагая, что вы используете JUnit, вы можете убедиться, что тесты выполняются в разветвленной JVM через

test.using :fork => :once

Однако я думал, что это поведение по умолчанию? Вы как-то переопределяете это? (См. http://buildr.apache.org/languages.html)

person Peter Donald    schedule 02.02.2013
comment
Да, Питер, мы уже пробовали использовать все варианты форка, но безрезультатно. У нас были похожие проблемы до вызова Java из Ruby. Похоже, Ruby сначала создает JVM, а чуть позже устанавливает свойства. Но этого достаточно, чтобы испортить статические классы, которым нужно читать свойства JVM. Наиболее очевидным решением является создание наших собственных задач buildr, которые просто вызывают сценарий оболочки для выполнения тестов, но я хочу посмотреть, есть ли решение в buildr, прежде чем идти по этому пути. - person David Semeria; 02.02.2013

этот код определяет log.dir в файле log4j.properties и устанавливает его в файле сборки через

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

моя установка

  • сборщик 1.4.7
  • рубин 1.9.3

чт

person user1771713    schedule 09.08.2013