我有一个ant项目,在其中添加了antunit测试。这是执行测试的目标。

<target name="test-build" depends="init-build">
    <au:antunit>
        <fileset file="test.xml"/>
        <au:plainlistener/>
        <au:xmllistener todir="${reports.antunit.dir}"/>
    </au:antunit>
</target>


test.xml看起来像这样

<project xmlns:au="antlib:org.apache.ant.antunit">
    <include file="build.xml" as="main"/>

    <target name="tearDown" depends="main.clean"/>

    <target name="test-project-name">
        <echo>project name is ${ant.project.name}</echo>
        <au:assertTrue>
            <equals arg1="${ant.project.name}" arg2="gradle-to-ant"/>
        </au:assertTrue>
    </target>
</project>


当我运行ant test-build时,echo语句未打印到控制台或报告中。

test-build:
[au:antunit] Build File: /etc/user/john/projects/gradle-to-ant/test.xml
[au:antunit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.033 sec
[au:antunit] Target: test-project-name took 0.012 sec

BUILD SUCCESSFUL
Total time: 0 seconds


我已经看到在props等其他项目中使用了echo。如何获得回声以在antunit测试中工作?

最佳答案

echo任务的输出已捕获,因此您可以在其上使用断言(即assertLogContains)。在props中,当您在antunit之外手动运行目标时,看起来echo在那里。

如果要查看echo的输出,则需要将logforwarder测试侦听器添加到antunit任务中,即

<au:antunit>
    <fileset file="test.xml"/>
    <au:plainlistener/>
    <au:xmllistener todir="${reports.antunit.dir}"/>
    <au:logforwarder/>
</au:antunit>

10-05 21:19