【问题标题】:How to set a global before PHPUnit's skeleton-test is run如何在 PHPUnit 的骨架测试运行之前设置一个全局变量
【发布时间】:2010-12-03 03:37:41
【问题描述】:

我们在 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']。

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

【问题讨论】:

    标签: php phpunit


    【解决方案1】:

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

    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".
    

    【讨论】:

    • 谢谢阿利斯特!太完美了。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2018-07-21
      • 1970-01-01
      • 2017-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-13
      • 1970-01-01
      相关资源
      最近更新 更多