2015-10-05 3 views
0

Сеть: «junitreport», похоже, не предоставляет способ установить временную папку, которую он использует при выполнении преобразований, и, похоже, это не способ обновить «java.io.tmpdir» для задачи отчетности , В этом случае установка «user.home» или «java.io.tmpdir» из командной строки при вызове ant не является решением, которое можно использовать.Как переопределить java.io.tmpdir при запуске ant/mantis junitreport?

Подробно: Я использую JUnit задачи в муравьиной/богомола, с этим синтаксисом:

<target name="unittest_report"> 
    <sequential> 
    <echo>User Home [ user.home ] [ ${user.home} ]</echo> 
    <echo>Java Temp [ java.io.tmpdir ] [ ${java.io.tmpdir} ]</echo> 
    <junitreport todir="${dir.unittest.reports}/raw"> 
     <fileset dir="${dir.unittest.reports}/raw"> 
     <include name="TEST-*.xml"/> 
     </fileset> 
     <report format="frames" todir="${dir.unittest.reports}"/> 
    </junitreport> 
    </sequential> 
</mantis:modifyenvironment> 

Это кажется очень стандартное применение, с добавлением «эхо» для отображения значений системных свойств, которые активны при выполнении задачи.

Задача работает отлично, за исключением того, что обработка записи временного вывод относительно временного каталога Java (java.io.tmpdir):

[15:55:03+0000/tester/unittest_report/echo] User Home [ user.home ] [ C:\Users\MyUser ] 
[15:55:03+0000/tester/unittest_report/echo] Java Temp [ java.io.tmpdir ] [C:\Users\MyUser\AppData\Local\Temp\ ] 
[15:55:04+0000/tester/unittest_report/junitreport] Processing c:\work\tester\build\reports\unittest\raw\TESTS-TestSuites.xml to 
    C:\Users\MyUser\AppData\Local\Temp\null591799606 

ключевых ценностей являются «java.io.tmpdir» значение и запись в «C: \ Users \ MyUser \ AppData \ Local \ Temp \ null591799606».

Я попытался временного обновления временный каталог, используя «sysproperty», например:

<mantis:modifyenvironment> 
    <sysproperty key="java.io.tmpdir" value="${dir.build}/junit.report.tmp"/> 
    <sequential> 
    <echo>User Home [ user.home ] [ ${user.home} ]</echo> 
    <echo>Java Temp [ java.io.tmpdir ] [ ${java.io.tmpdir} ]</echo> 
    <junitreport todir="${dir.unittest.reports}/raw"> 
     <fileset dir="${dir.unittest.reports}/raw"> 
     <include name="TEST-*.xml"/> 
     </fileset> 
     <report format="frames" todir="${dir.unittest.reports}"/> 
    </junitreport> 
    </sequential> 
</mantis:modifyenvironment> 

Но это не имеет никакого эффекта.

Тогда:

1) Правильно ли это ожидание «sysproperty» обновить системное свойство для выполнения этой задачи «junitreport»? Например, эффект «sysproperty» может быть ограничен вложенными «java» последовательными вызовами задачи, и в этом случае ожидание того, что обновление будет видимым для «junitreport», было бы неверным.

2) Или, в частности, существует ограничение на «java.io.tmpdir», которое мешает этому работать?

3) Или, есть ли ошибка в «sysproperty»?

Для этой проблемы мне не удалось обновить «java.io.tmpdir» (или «user.home») из командной строки. Эти значения не могут быть изменены в более широкой области, чем вызовы задачи «junitreport».

Наконец: Не уверен, что, если он подходит под этим же набором вопросов:

4) Где документация для «богомол: modifyenvironment»? Я нахожу это в своем локальном «mantis.jar», но я не нахожу документацию для него в руководстве/документации по мантизму.

5) Этот «junitreport» изменяет файловую систему через «java.io.tmpdir» без возможности переопределения, кажется, очень плохая практика.

+0

Вопрос 5: Почему это плохая практика? Предполагается, что tmpdir будет служить для этих вопросов.Вы не должны заботиться о содержимом tmpdir (за исключением очистки их время от времени), потому что результаты _definitive_ записываются в другом месте. –

ответ

0

О вопросах 1-3 около sysproperty Я могу сказать вам, что единственное место, где оно может быть использовано, - это выполнить новый JVM: I.E. в пределах java и аналогичные задачи, такие как junit. (Вы можете прочитать его в соответствующих документах).