有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在AntUnit控制台日志中显示完整异常堆栈跟踪

我正在使用Apache AntUnit对我实现的一些JavaAnt任务进行单元测试。 但是,如果我的JavaAnt任务抛出异常,AntUnit控制台日志似乎只输出异常的第一行,这对于确定问题不是很有用。 例如:

[au:antunit] Target: testMyAntTask  caused an ERROR
[au:antunit]    at line 52, column 166
[au:antunit]    Message: java.lang.NullPointerException
[au:antunit]    took 0.099 sec

在这里,我只能看到抛出了一个NullPointerException,但没有完整的stacktrace来跟踪问题的根源

这是在通过单独的构建调用我的AntUnit测试脚本时发生的。xml目标:

<target name="run-antunit-tests" description="Run ANT Unit tests" depends="jar">
    <taskdef resource="org/apache/ant/antunit/antlib.xml" uri="antlib:org.apache.ant.antunit" classpathref="my.classpath"/>
    
    <property name="antunit.results.dir" location="${basedir}/testResults/antunit-results"/>
    <delete dir="${antunit.results.dir}"/>
    <mkdir dir="${antunit.results.dir}"/>
    
    <au:antunit>
        <file file="antTaskUnitTests.xml"/>
        <au:plainlistener logLevel="info"/>
    </au:antunit>
</target>

更改为:plainlistener日志级别:<au:plainlistener logLevel="debug"/>没有任何区别

为了实际获取信息(输出到单独的XML文件),我可以使用xmllistener

<au:antunit>
    <file file="antTaskUnitTests.xml"/>
    <au:plainlistener logLevel="info"/>
    <au:xmllistener logLevel="info" toDir="${antunit.results.dir}"/>
</au:antunit>

然后将在单元中生成一个xml文件。后果dir,对于此NullPointerException示例(为简洁起见截断):

 <testcase name="testMyAntTask">
    <error columnnumber="167" linenumber="52" message="java.lang.NullPointerException" type="org.apache.tools.ant.BuildException">C:\dev\antTaskUnitTests.xml:52: java.lang.NullPointerException
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:116)
    at org.apache.tools.ant.Task.perform(Task.java:348)
...

通过这个stacktrace,我可以找到问题所在。 然而,为了便于使用,我希望将这个stacktrace输出到控制台,而plainlistener似乎没有提供任何选项来输出它

我在使用Ant JUnit测试时遇到了类似的问题,我希望在控制台上显示异常的完整stacktrace。我发现通过使用junit brief formatter,stacktrace被输出。似乎没有一个单位等价物

控制台更可取的原因是这些单元测试将在Jenkins上运行,我不希望必须手动检查工作区来查询AntUtil输出的XML文件

有人知道如何在不实施我自己的AntUnitListener的情况下实现这一点吗


共 (0) 个答案