微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 无条件地在ant中执行任务?

我正在尝试定义在目标完成执行时发出(使用echo)消息的任务,无论该目标是否成功.具体来说,目标执行一个任务来运行一些单元测试,我想发出一条消息,指出结果的可用位置:
<target name="mytarget">
  <testng outputDir="${results}" ...>
    ...
  </testng>
  <echo>Tests complete.  Results available in ${results}</echo>
</target>

不幸的是,如果测试失败,则任务失败并且执行中止.因此,只有在测试通过时才输出消息 – 与我想要的相反.我知道我可以将任务放在任务之前,但这会让用户更容易错过这条消息.我正在尝试做什么?

更新:事实证明我是愚蠢的.我的< testng>中有haltOnFailure =“true”任务,这解释了我所看到的行为.现在的问题是,将此设置为false会导致整个ant构建成功,即使测试失败,这也不是我想要的.以下使用该任务的答案看起来可能是我想要的……

解决方法

您的问题的解决方案是将failureProperty与testng任务的haltOnFailure属性一起使用,如下所示:
<target name="mytarget">
  <testng outputDir="${results}" failureProperty="tests.Failed" haltOnFailure="false" ...>
    ...
  </testng>
  <echo>Tests complete.  Results available in ${results}</echo>
</target>

然后,在其他地方,当您希望构建失败时,添加如下所示的ant代码

<target name="doSomethingIfTestsWereSuccessful" unless="tests.Failed">
   ...
</target>

<target name="doSomethingIfTestsFailed" if="tests.Failed">
   ...
   <fail message="Tests Failed" />
</target>

然后,您可以在您希望您的ant构建失败的地方调用doSomethingIfTestsFailed.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐