如何在运行PHPUnit的skeleton-test之前设置全局

时间:2009-10-01 21:03:12

标签: php phpunit

我们在prepend文件中设置了一个global,用于构成require_once调用的路径。例如:

require_once($GLOBALS['root'].'/library/particleboard/JsonUtil.php');

问题是,当我运行PHPUnit的骨架测试构建器时,不会运行前置文件,因此永远不会设置全局。我跑的时候

cd /company/trunk/queue/process; phpunit --skeleton-test QueueProcessView

PHPUnit尝试在QueueProcessView中解析require_once,但由于从未设置$ GLOBALS ['root'],因此在包含所需文件时会出现致命错误。

例如,对于PHPUnit,应该是什么

require_once(/code/trunk/library/particleboard/JsonUtil.php)

解析为

require_once(/library/particleboard/JsonUtil.php)

注意缺少的根。

有没有人知道骨架测试代码是否有某种方法可以在运行之前调用PHP文件?在这里我可以在这个文件中设置我的GLOBAL ['root']。

任何其他有创意的解决方案都将受到赞赏。

2 个答案:

答案 0 :(得分:2)

与引导常规测试套件的方式相同,您也可以为骨架生成做同样的事情

phpunit --bootstrap prepend.php --skeleton-test QueueProcessView

我用三个文件测试了这个:

test.php的:

<?php   
require_once($GLOBALS['root'].'/confirmedToRun.php');
class test
{
   function doStuff()
   {
   }
}

prepend.php:

<?php   
$root = "/tmp/";

confirmedToRun.php:

<?php   
echo __FILE__;

运行phpunit --bootstrap prepend.php --skeleton-test test生成骨架类testTest.php - 也运行confirmedToRun.php文件。

phpunit --bootstrap prepend.php --skeleton-test test
PHPUnit 3.4.2 by Sebastian Bergmann.

/tmp/confirmedToRun.php
Wrote skeleton for "testTest" to "/home/me/tmp/testTest.php".

答案 1 :(得分:0)

好的,我明白了。我只是编辑了PHPUnit / Util / Test.php文件以包含我的参考。不是最优雅的解决方案,但由于框架的其余部分允许您调用引导文件,我可以使用这个被黑客攻击的实用程序。