当前位置: 首页 > 知识库问答 >
问题:

运行ant/Mantis JunitReport时如何覆盖“java.io.tmpdir”?

易炳
2023-03-14

Net:“junitreport”似乎没有提供一种方法来设置它在执行转换时使用的临时文件夹,而且似乎也没有提供更新“java”的方法。io。报告任务的tmpdir。在这种情况下,请设置“user”。主页或java。io。调用ant时从命令行调用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) 对于“junitreport”任务,更新系统属性的“sysproperty”预期是否正确?例如,“sysproperty”的作用可能仅限于嵌套的“java”顺序任务调用,在这种情况下,对“junitreport”可见更新的期望是不正确的。

2) 或者,对“java.io.tmpdir”是否有特别的限制,从而阻止其工作?

3) 或者,“sysproperty”中是否存在错误?

对于这个问题,我无法从命令行更新“java.io.tmpdir”(或“user.home”)。不能在比“junitreport”任务调用更大的范围内修改这些值。

最后:不确定它是否适合同一组问题:

4) “螳螂:modifyenvironment”的文档在哪里?我在本地的“mantis.jar”中找到了这一点,但在螳螂手册/文档中找不到相关文档。

5) “junitreport”通过“java.io.tmpdir”修改文件系统,而没有可能的重写,这似乎是一种非常糟糕的做法。

共有1个答案

淳于博
2023-03-14

关于问题1-3关于sysproperty,我可以告诉您,它唯一可以使用的地方是在执行新JVM之前:即在java和类似任务(如junit)中。(您可以在各自的文档中阅读)。

 类似资料:
  • 问题内容: 我试图覆盖Python类的方法,因为我想每次实例属性更改其值时都调用另一个函数。但是,我不希望该方法出现此行为,因为在此初始化期间,我设置了一些稍后将要使用的属性: 到目前为止,我有此解决方案,而不必在运行时重写: 但是,我想避免这些,并在方法末尾进行覆盖: 我尝试了和,但是这些尝试都没有效果。我已经阅读了数据模型参考的这一部分,但是看起来自己的分配有些棘手。 如何可能在的末尾进行覆盖

  • 使用JPA EntityManager和JPA查询对象,我如何覆盖在查询中惰性获取注释@OneToMany(fetch=FetchType.EAGER)的内容? 如果我有hibernate查询对象,我可以让它创建一个criteria对象,并使用它将fetch类型设置为lazy。但我必须使用JPA查询对象。这个问题有什么解决办法吗?

  • 我应该使用哪个保险套件?是Eclemma还是Jacoco? 如何使用覆盖包运行该工具?我应该把它添加到build.xml文件中吗?我应该把它添加到命令行吗? 我对Java中覆盖的整个概念有点困惑。在Python和Perl等动态语言中,我只需使用coverage模块执行代码,该模块创建coverage报告。 我们用来执行out工具的命令: 我很难理解和。我试图覆盖的文件是。在的某个内部文件夹中有,在

  • 我正在使用thuncydides jbehave插件来运行Selenium测试。但是,由于 jbehave 超时,我总共无法运行超过 5 分钟的测试。我不知道如何配置thuncydides/jbehave来覆盖这个限制。硒测试过去比5分钟更长,所以这对许多人来说应该是一个实际问题。

  • 但是当我运行test时,两个浏览器实例都打开了(Chrome首先打开并开始执行,延迟后Firefox打开)。在这种情况下,驱动程序对象被Firefox驱动程序覆盖,chrome停止执行。测试继续在Firefox上执行并成功完成。 项目的结构是这样的: 创建了一个DriverBase.class来加载与浏览器对应的驱动程序,该浏览器具有my@beforeSuite. crteated页面的单个类。(

  • 我想通过html显示Jmeter结果。html仪表板信息不够丰富,所以我想使用ant解决方案。 < li >我按预期安装了ant < li >我将testplan.jmx复制到C:\ Jmeter _ 4.0 \ Apache-Jmeter-4.0 \ extras < li >我将testplan.jmx更改为Test.jtl < li >我进入了cmd CD C:\ Jmeter _ 4.0