尽管CakePHP单元测试失败,Phing仍在继续建设

时间:2014-04-15 09:15:25

标签: unit-testing cakephp jenkins phing

我们使用Jenkins作业和Phing进行部署。我们的应用程序是在CakePHP上制作的。当我运行Cake单元测试时,我遇到了一些错误(如预期的那样)。

/app/Console/cake test app AllQaTests --stderr --log-junit

但Phing并没有意识到它们并继续构建而不是停止进程并将构建标记为失败。有没有优雅的方法来处理测试输出?

现在我们使用一个单独的脚本来扫描测试日志并寻找" FAILURE"字。

2 个答案:

答案 0 :(得分:1)

如果您的cake命令输出0以外的任何内容,则Jenkins会将其视为FAILURE,并且相应的作业将被标记。

要回答搜索关键字控制台日志的问题,可以使用 Text-finder plugin 搜索控制台日志和/或任何其他文件以获取RegEx,并将构建标记为{如果找到{1}}或UNSTABLE

答案 1 :(得分:0)

我即将做同样的事情,但最终尝试使用ExecTask的returnProperty通过Phing捕获失败的构建:

 <target name="caketest-local" description="Run CakePHP unit tests with PHPUnit and print human readable output.">
    <exec dir="${basedir}" executable="${basedir}/app/Console/cake" output="${logdir}/caketest.log" returnProperty="test_result">
        <arg line="test" />
        <arg line="--stderr"/>
        <arg line="--configuration=${basedir}/phpunit-coverage-text.xml" />
        <arg line="app" />
        <arg line="AllTests" />
    </exec>
    <if>
        <not>
            <equals arg1="${test_result}" arg2="0"/>
        </not>
        <then>
            <fail msg="Build FAILED! Check caketest.log for details"/>
        </then>
    </if>
</target>