Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 尽管CakePHP单元测试失败,Phing仍在继续构建_Unit Testing_Cakephp_Jenkins_Phing - Fatal编程技术网

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

Unit testing 尽管CakePHP单元测试失败,Phing仍在继续构建,unit-testing,cakephp,jenkins,phing,Unit Testing,Cakephp,Jenkins,Phing,我们使用Jenkins job和Phing进行构建部署。我们的应用程序是在CakePHP上开发的。当我运行Cake单元测试时,我得到了一些错误(正如预期的那样) 但是Phing没有察觉到它们,而是继续构建,而不是停止进程并将构建标记为失败。有没有优雅的方法来处理测试的输出 现在我们使用一个单独的脚本来扫描测试日志并查找“失败”字。如果您的cake命令输出的不是0,Jenkins会将其视为失败,并相应地标记作业 为了回答您在控制台日志中搜索关键字的问题,有一个,它允许搜索控制台日志和/或任何其他文

我们使用Jenkins job和Phing进行构建部署。我们的应用程序是在CakePHP上开发的。当我运行Cake单元测试时,我得到了一些错误(正如预期的那样)

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


现在我们使用一个单独的脚本来扫描测试日志并查找“失败”字。

如果您的
cake
命令输出的不是
0
,Jenkins会将其视为
失败,并相应地标记作业


为了回答您在控制台日志中搜索关键字的问题,有一个,它允许搜索控制台日志和/或任何其他文件中的正则表达式,并将生成标记为
不稳定
失败
,如果找到的话。

,但最终尝试使用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>

 <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>