gpt4 book ai didi

unit-testing - Ant中exec失败的条件任务

转载 作者:行者123 更新时间:2023-12-04 06:22:28 26 4
gpt4 key购买 nike

我有一些通过 Ant 运行的单元测试,如果单元测试失败,我希望能够运行一些清理代码。我正在寻找某种“最终”块,但我没有找到一个。我试过在任务上使用 errorproperty 和 if 语句,但 ant 只接受“true”、“on”和“yes”作为真正的属性。一个成功执行的任务(至少在 unix 上)返回 0,所以我不得不构建一个极其复杂的装置:

<project name="TestBuild" default="build" basedir=".">
<target name="build" depends="truth,checkresult,cleanup" />

<target name="truth">
<echo message="Running Truth" />
<exec executable="false" errorproperty="testfailure"/>
</target>
<target name="checkresult">
<condition property="testfailed">
<not>
<equals arg1="${testfailure}" arg2="0" />
</not>
</condition>
</target>
<target name="cleanup" if="testfailed">
<echo message="cleanup" />
<fail />
</target>

有没有更简单的方法来做到这一点?一方面,这需要完成任务,这看起来很荒谬。这也意味着我必须在每个单元测试块之后都调用它们,因为我显然无法像往常一样设置 failonerror。总而言之,这是一个笨拙、不优雅的解决方案,我希望有人有更好的解决方案。

最佳答案

两种可能

-1-
对脚本的特定部分使用一些 try/catch/finally 构造
您需要一些提供这些功能的 Ant 插件,例如=
Flaka
Antcontrib/Antelope

    <trycatch>
<try>
<exec .../>
</try>
<catch>
do your cleanup here
and afterwards don't forget to fail
</fail message="......."/>
</catch>
optionally you may use a finally section also
<finally>
..
</finally>
</trycatch>

-2-
对整个脚本使用 buildlistener ( BUILD SUCCESSFUL, BUILD FAILED )

Kev Jackson 在他的演讲中有一个很好的 exec-listener 例子,= http://people.apache.org/~kevj/ossummit/extending-ant.html (执行监听器的来源包含在幻灯片中)

您可以在构建完成后根据构建结果启动特定任务
<!-- taskcontainer -->    
<exec-listener onSuccess="true|false">
..

your stuff goes here
..
</exec-listener>

关于unit-testing - Ant中exec失败的条件任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6387319/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com