7

使用 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 任务将控制台输出转储到文件中,而不是等待测试套件结束?

谢谢!

4

1 回答 1

14

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

<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"和格式化程序。这是有问题的,因为这意味着 test stdout & stderr 在输出窗口中出现了两次(在运行时,因为showoutput标志,在执行之后,因为格式化程序)。

于 2013-05-16T12:38:25.360 回答