3

我们在 prepend 文件中设置了一个全局变量,用于形成我们的 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'] 。

任何其他创造性的解决方案将不胜感激。

4

2 回答 2

2

就像您可以引导常规测试套件一样,您也可以为骨架生成做很多相同的事情

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

我用三个文件对此进行了测试:

测试.php:

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

prepend.php:

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

确认运行.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".
于 2010-05-03T21:49:31.747 回答
0

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

于 2009-10-01T22:03:38.123 回答