我试图扩展PHPUnit行为,并且我想在phpunit.xml配置文件中添加新的配置值。所以配置文件看起来像这样
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
colors="true"
bootstrap="vendor/autoload.php"
my_new_configuration_value="true" <!-- This is not a PHPUnit configuration value -->
>
</phpunit>
我已经创建了一个自定义的TestRunner using the Decorator way of extending PHPUnit,并且在TestRunner中我想知道&#39; my_new_configuration_value&#39;的价值。 我一直在阅读PHPUnit的内部代码,似乎无法绕过它,因为它已经在PHPUnit_Util_Configuration类中硬编码了潜在的配置值。
有办法吗?
答案 0 :(得分:0)
我在bootstrap.php文件中添加了变量,并在我的测试中引用它们。例如,我们的遗留代码有一些位置想要在某些条件下退出应用程序,我不能让它在运行测试时发生。因此,我将以下内容添加到bootstrap.php。
// PHP and Web server settings
error_reporting(E_ALL | E_STRICT);
date_default_timezone_set("America/Toronto"); // Set the default timezone
$_SERVER['SERVER_NAME'] = 'http://myserver'; // Set Web Server name
// Process the Include Path to allow the additional application to be set.
$IncludePaths = explode( PATH_SEPARATOR, get_include_path() );
$NewIncludePaths = array_merge( $IncludePaths, array(dirname(__FILE__) ));
set_include_path( implode( PATH_SEPARATOR, array_unique($NewIncludePaths))); // Update Include Path
//define('PHPUNIT_RUNNING', 1); // Indicate to the code that Automated Testing is running.
然后在我的测试中,我可以检查PHPUNIT_RUNNING
的值,而不是在错误上退出。
if(! @PHPUNIT_RUNNING )
{
exit();
}