扩展PHPUnit并将自定义配置值添加到PHPUnit的xml文件中

时间:2014-08-20 18:53:45

标签: php phpunit

我试图扩展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类中硬编码了潜在的配置值。

有办法吗?

1 个答案:

答案 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();
}