0

一旦 RunTests 完成,我想调用 sendmail,但它不起作用

<project name="Sample usage of Salesforce Ant tasks" basedir="." xmlns:sf="antlib:com.salesforce" default="RunTests">
    <!--******************************************* P R O P E R T Y   F I L E *********************************************-->
    <property file="build.properties"/>
    <property environment="env"/>
    <!--*******************************************RunTests***********************************************************-->
    <target name="RunTests">
        <record name="RunTest.log" action="start"/>
            <sf:compileAndTest  username="${sf.backup_username}" password="${sf.backup_password}" serverurl="${sf.backup_serverurl}" >
                <runTests Alltests="true"/>
            </sf:compileAndTest>
        <record name="RunTest.log" action="stop"/>    
    </target>
    <target name="sendmail" depends="RunTests"> 
        <mail mailhost="email.corp.testcompany.com" mailport="25" subject="Run all tests - Sandbox 1337" messagefile="RunTest.log">
            <from address="user2@testcompany.com"/>
            <replyto address="user2@testcompany.com"/>
            <to address="user2@testcompany.com"/>
        </mail> 
    </target>       
</project>

我得到以下失败 -

构建失败 C:\ANT_HOME\QA_1337_TestRunner\build.xml:8: 失败:

即使早期任务失败,有什么方法可以执行“sendemails”任务。

4

2 回答 2

3

尝试运行

ant sendmail

或将默认值更改为 sendmail

<project name="Sample usage of Salesforce Ant tasks" basedir="." xmlns:sf="antlib:com.salesforce" default="sendmail">

并简单地执行

ant

编辑:

在快速查看任务的salesforce 文档sf:compileAndTest后,我没有找到任何有用的信息来说明如何在测试和/或编译失败时避免目标执行失败。(也许是checkonly属性,但我不确定这是你需要的,也不确定你是否可以通过 ant 任务传递它)

所以我认为你必须在外部处理目标执行失败。为此,您可以使用来自 ant-contrib 的 trycatch 任务。

它看起来像这样:

<trycatch property="foo" reference="bar">
  <try>
    <record name="RunTest.log" action="start"/>
        <sf:compileAndTest  username="${sf.backup_username}" password="${sf.backup_password}" serverurl="${sf.backup_serverurl}" >
            <runTests Alltests="true"/>
        </sf:compileAndTest>
    <record name="RunTest.log" action="stop"/>
  </try>

  <catch>
    <echo>Got error while running compileAndTest</echo>
  </catch>

  <finally>
    <mail mailhost="email.corp.testcompany.com" mailport="25" subject="Run all tests - Sandbox 1337" messagefile="RunTest.log">
        <from address="user2@testcompany.com"/>
        <replyto address="user2@testcompany.com"/>
        <to address="user2@testcompany.com"/>
    </mail>
  </finally>
</trycatch>

请注意,您可以使用该<catch>部分在测试失败时发送特殊电子邮件。

propertyreference可用于获取有关失败的信息(如果有)。

于 2012-12-27T02:26:22.700 回答
1

我认为您想研究failurePropertyandhaltOnFailure属性。

此线程答案中的更多信息: https ://stackoverflow.com/a/134563/708777

于 2012-12-27T06:56:30.957 回答