【发布时间】:2016-01-02 09:10:09
【问题描述】:
Net: 'junitreport' 似乎没有提供一种方法来设置它在执行转换时使用的临时文件夹,并且似乎不是一种更新报告的 'java.io.tmpdir' 的方法任务。在这种情况下,在调用 ant 时从命令行设置 'user.home' 或 'java.io.tmpdir' 不是可以使用的解决方案。
详细说明:我在 ant/mantis 中使用 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>
这似乎是一种非常标准的用法,添加了“echo”语句来显示在执行任务时处于活动状态的系统属性值。
任务运行良好,除了处理写入相对于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) “mantis:modifyenvironment”的文档在哪里?我在我的本地“mantis.jar”中找到了这个,但我在 mantis 手册/文档中没有找到它的文档。
5)“junitreport”通过“java.io.tmpdir”修改文件系统而没有可能的覆盖似乎是非常糟糕的做法。
【问题讨论】:
-
问题 5:为什么这是不好的做法? tmpdir 应该为这些事情服务。你不应该关心 tmpdir 的内容(除了偶尔清除它们),因为确定的结果被记录在另一个位置。