如何在ant中运行的JUnit测试失败时记录完整的堆栈跟踪?

时间:2010-03-19 18:57:19

标签: ant junit

当JUnit测试在Eclipse中运行时抛出运行时异常时,您可以看到整个堆栈跟踪。

我们的构建服务器使用ant并运行JUnit,但是失败时的打印输出仅提供异常消息,而不是整个“printStackTrace”。有没有方便的方法来获得此功能?

2 个答案:

答案 0 :(得分:2)

我已经将这个答案发布到this question,然后才意识到这是你的副本。

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

<junit
  showoutput="yes"
  errorProperty="test.failed"
  failureProperty="test.failed"
  haltOnFailure="${test.halt-on-failure}"
  fork="yes"
  forkmode="${junit.forkmode}"
>
  <classpath>
    <pathelement location="${classes.dir}"/>
    <pathelement location="${classes-under-test.classes.dir}" />
  </classpath>

  <!-- #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"
  />

答案 1 :(得分:1)

JUnit BaseTestRunner中有一个设置限制了这个值:

/**
  * Truncates a String to the maximum length.
  */
public static String truncate(String s) {
    if (fgMaxMessageLength != -1 && s.length() > fgMaxMessageLength)
        s= s.substring(0, fgMaxMessageLength)+"...";
    return s;
}

您可以通过设置:

来更改此值
BaseTestRunner.setPreference("maxmessage", "-1");