Свойства JVM сборки для JUnit устанавливаются внутри JVM, а не снаружи
При использовании JUnit мы передаем каталог, используемый для регистрации, как свойство JVM. Это прекрасно работает в командной строке и в Eclipse. Однако это не работает, когда мы передаем одно и то же свойство тестовой задаче Buildr.
test.using :properties => { :"server.name" => "tester", :"log.dir" => log_dir}
Мы знаем, почему это происходит. Свойство устанавливается изнутри JVM, а не снаружи. Это означает, что во время выполнения (когда загружен статический класс ведения журнала) свойство еще не установлено. Если мы запросим свойство позже (скажем, из модульного теста), то увидим, что оно установлено правильно.
Кто-нибудь знает об обходном пути?
Кстати, мы используем log4J, но вопрос применим к любому статическому классу, которому нужен доступ к свойству JVM, установленному Buildr.
2 ответа
Предполагая, что вы используете JUnit, вы можете убедиться, что тесты выполняются в разветвленной JVM через
test.using :fork => :once
Однако я думал, что это было поведение по умолчанию? Вы переопределяете это как-то? (См. http://buildr.apache.org/languages.html).
Этот код определяет log.dir в файле log4j.properties и устанавливает его в файле сборки через
test.using :properties => { :"log.dir" => '/tmp'}
моя установка
- buildr 1.4.7
- рубин 1.9.3
НТН