0

我有一个像这样的 Ant 脚本:

<target name="create_report_file">
  <echo file="${testResultsDir}/test_report.xml">
    <testsuite name="${platformTask}">
    </testsuite>
  </echo>
</target>

<echo> 和 </echo> 之间的标签是什么意思?Ant 会运行它们还是输出?或两者?

4

2 回答 2

1

文件是一个回声参数。这是将消息写入的文件。

testsuite 可能是一个 JUnit 任务。

Ant 目标运行测试套件并将结果输出到 test_report.xml 文件。

于 2013-07-08T16:09:44.643 回答
0

你的 Ant 脚本有效吗?如果它试图执行create_report_file目标怎么办?

file通常,如果指定了参数,回显任务只是将内容回显到控制台或文件。

但是,正如所写,它<testsuite>是任务的子实体,<echo/>但不是。事实上,任务中没有记录的子实体<echo/>。事实上,<echo>它甚至不会<condition/>像那样承担子实体任务<fail/>

这就是为什么我要问您的构建文件是否正常工作。

看来他们可能想要记录正在执行的测试套件。有两种方法可以做到这一点:

将所有 < 和 > 更改为字符实体:

<target name="create_report_file">
    &lt;echo file="${testResultsDir}/test_report.xml"&gt;
        &lt;testsuite name="${platformTask}"&gt;
        &lt;/testsuite&gt;
    </echo>
</target>

使用<echoxml>代替<echo>

<target name="create_report_file">
    <echoxml file="${testResultsDir}/test_report.xml">
        <testsuite name="${platformTask}">
        </testsuite>
    </echoxml>
</target>

另一种可能

您可能正在使用一些有<testsuite>任务的 Ant 插件。我不知道这会是什么。该<testsuite>任务不是 JUnit 或 TestNG 的一部分。但是,如果使用了定义<testsuite>任务的 Ant 插件,它可能会重新定义<echo>它所在的任务。你的构建脚本里面有<taskdef>吗?如果是这样,类参考是什么?

可能是用户<testsuite>在您的构建脚本中定义了自己的宏。但是,这不会重新定义<echo>任务,它仍然行不通。

于 2013-07-08T18:25:10.497 回答