我们在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']。
任何其他有创意的解决方案都将受到赞赏。
答案 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文件以包含我的参考。不是最优雅的解决方案,但由于框架的其余部分允许您调用引导文件,我可以使用这个被黑客攻击的实用程序。