Net:'junitreport'似乎沒有提供設置執行轉換時使用的臨時文件夾的方法,但似乎並未更新報告任務的「java.io.tmpdir」方法。在這種情況下,在調用ant時從命令行設置'user.home'或'java.io.tmpdir'不是可以使用的解決方案。如何在運行ant/mantis junitreport時覆蓋「java.io.tmpdir」?
詳細:我使用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」中是否有bug?
對於這個問題,我是從命令行更新「java.io.tmpdir」(或「的user.home」)防止。這些值不能在比「junitreport」任務調用更廣的範圍內修改。
最後:
4)如果是「螳螂:modifyenvironment」的文件:如果它符合這個同樣的問題在不知道?我在我的本地「mantis.jar」中找到了這個,但是我在螳螂手冊/文檔中找不到它的任何文檔。
5)認爲,「junitreport」到「java.io.tmpdir」沒有可能超越修改文件系統似乎是非常不好的做法。
問題5:爲什麼它是不好的做法? tmpdir應該爲這些事情服務。你不應該關心tmpdir的內容(除了偶爾清除它們),因爲_definitive_結果正在被記錄在另一個位置。 –