ant junit任务的选项,可以即时转储控制台输出

时间:2013-01-31 08:38:06

标签: ant junit log4j

使用Ant junit任务启动非回归测试时出现问题:控制台输出仅在测试结束时转储。当进程Xmx的日志太多时,它会导致一些OOM,这意味着如果进程在结束之前死亡(或被监视程序杀死),则日志将丢失。

<junit fork="true" forkmode="once" timeout="1200000" haltonfailure="no" 
 outputtoformatters="yes" failureProperty="test.failure" dir="${project.test.dir}">
  <junit-opts/>
  <formatter type="xml" />
  <formatter type="brief" />
  <test name="${project.test.suite}" todir="${report.junit.dir}" outfile="@{project.test.name}" />
</junit>

当然,可以通过将日志转储到文件中来解决问题(我们使用log4j作为日志记录API)。但是,我们非常希望测试应用程序的控制台输出日志。

是否有设置允许告诉ant junit任务将控制台输出转储到文件中而不是等待测试套件结束?

谢谢!

1 个答案:

答案 0 :(得分:13)

showoutput="true"参数添加到junit命令:

<junit fork="true" showoutput="true" forkmode="once" timeout="1200000" haltonfailure="no" 
 outputtoformatters="yes" failureProperty="test.failure" dir="${project.test.dir}">
  <junit-opts/>
  <test name="${project.test.suite}" todir="${report.junit.dir}" outfile="@{project.test.name}" />
</junit>

避免使用showoutput="true"和格式化程序。这是有问题的,因为它意味着测试stdout&amp; stderr在输出窗口中出现两次(在运行时,因为showoutput标志,并且在执行之后,因为格式化程序)。