我目前有一个问题,我必须在遗留代码中解决,以使我们与PHP扩展的交互正常工作(Singleton测试问题).
因此,我不想在使用应用程序运行常规生产代码时执行此代码.因此,如果正在执行的代码作为测试的一部分执行,我需要检查常规PHP代码.
关于如何确定这个的任何建议?我想到了一个与测试文件本身存在相关的定义变量(我们不会将测试发送给客户),但是我们的开发人员需要Extension才能正常工作,而CI服务器需要运行测试.
是否建议在PHPUnit.xml文件中设置Global?其他想法?
Jen*_*och 35
另一种方法是在phpunit.xml的PHP部分设置一个常量.*:
<php>
<const name="PHPUNIT_YOURAPPLICATION_TESTSUITE" value="true"/>
</php>
Run Code Online (Sandbox Code Playgroud)
在PHP应用程序中,您可以使用以下检查:
if (defined('PHPUNIT_YOURAPPLICATION_TESTSUITE') && PHPUNIT_YOURAPPLICATION_TESTSUITE)
{
echo 'TestSuite running!';
}
Run Code Online (Sandbox Code Playgroud)
你可以检查$argv不同的方式.
if(PHP_SAPI == 'cli') {
if(strpos($_SERVER['argv'][0], 'phpunit') !== FALSE) { ... }
// or
if($_SERVER['argv'][0] == '/usr/bin/phpunit') { ... }
}
Run Code Online (Sandbox Code Playgroud)
你可以定义常量,但这需要你的工作,没有错别字,它不是通用的。如何做得更好?
PHPUnit 自己定义了 2 个常量:
if (! defined('PHPUNIT_COMPOSER_INSTALL') && ! defined('__PHPUNIT_PHAR__')) {
// is not PHPUnit run
return;
}
// is PHPUnit
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8216 次 |
| 最近记录: |