如何让 JUnit 测试(从 Ant 脚本驱动)转储导致失败的异常堆栈?

Posted

技术标签:

【中文标题】如何让 JUnit 测试(从 Ant 脚本驱动)转储导致失败的异常堆栈?【英文标题】:How can I get JUnit test (driven from Ant script) to dump the stack of exception that causes failure? 【发布时间】:2011-01-29 14:59:38 【问题描述】:

我们从 Ant 脚本运行 JUnit 测试,如下所示。当测试失败时,我希望它输出导致失败的异常的堆栈转储,但事实并非如此。有没有什么技巧可以甩掉它?

<target description="Run JUnit tests" name="run-junit" depends="build-junit">
    <copy file="./AegisLicense.txt" tofile="test/junit/classes/AegisLicense.txt" overwrite="true"/>
    <junit printsummary="yes" haltonfailure="no" fork="yes" forkmode="once" failureproperty="run-aegis-junit-failed" showoutput="yes" filtertrace="off">
        <classpath refid="Aegisoft.testsupport.classpath"/>
        <classpath>
            <pathelement location="test/junit/classes"/>
        </classpath>
        <batchtest>
            <fileset dir="test/junit/src">
                <include name="**"/>
            </fileset>
        </batchtest>
    </junit>
 <fail

【问题讨论】:

重复? ***.com/questions/2479877/… 【参考方案1】:

在我看到this question 之前,我已经在这里发布了这个。我认为这个问题是重复的。

这是我的 junit 标记,它确实产生了异常跟踪

  <!-- #Formatters for capture and display -->
  <formatter
    type="brief"
    usefile="false"
  />
  <formatter type="brief" />
  <formatter
    type="xml"
    if="test.generate.xml.output"
  />

  <!-- #Test case isolation technique -->
  <test
    name="$testcase"
    if="testcase"
  />

  <batchtest
    todir="$test.data.dir"
    unless="testcase"
  >
    <fileset dir="$classes.dir">
      <include name="**/Test*.class" />
      <exclude name="**/Test*$*.class" />
    </fileset>
  </batchtest>

</junit>

我认为可以为你做这件事的一个嵌套元素是

  <formatter
    type="brief"
    usefile="false"
  />

【讨论】:

以上是关于如何让 JUnit 测试(从 Ant 脚本驱动)转储导致失败的异常堆栈?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 JUnit Ant 任务配置为仅在失败时生成输出?

junit-单元测试

Junit_Ant使用Eclipse自带的Junit和Ant,生成测试报告

junit 测试和非 junit 测试与 ant 目标

Linux下搭建Jmeter+Ant+Jenkins自动化测试框架

从换位思考到测试驱动开发转