English 中文(简体)
为PHPUnit的“邮袋陷阱.php”中的密码收集白/黑名单添加文件
原标题:Add files to code-coverage white/blacklists in `bootstrap.php` for PHPUnit

PHP_CodeCoverage 1.1除去了PHP_CodeCoverage_Filter 的单一吨入口,允许我们的PHPUnitcks.php文档中增加白色/黑名单的目录。 PHPUnit 3.5利用黑名单从破碎的痕迹中脱下班,而CCC则使用白色清单限制跟踪。 我们使用了这两种特点。

How can I get the PHP_CodeCoverage_Filter instance that PHPUnit will use from the bootstrap.php file?

<>说明: 我们不能将这些途径纳入<代码>phpunit.xml,因为道路是从环境变量和汇文档中修建的。

<>Update: 我看到<代码>PHPUnit_Util_Filter不再使用密码覆盖黑名单过滤 st痕。 这是罚款,因为这一类别是为了静态进入而设计的,因此,我可以增加一个方法,在名单上增加用户名录。 这将是一个轻而易举的变化,解决了这一问题的一半。

最佳回答

这是一个ug,但在PPUnit 3.6中工作。 我们已经有了我们自己的习俗测试案例基础类别,而其他所有情况都是如此。 如果在档案中添加到白名单时确实如此,那么你就能够利用一个假冒测试案例来处理这一部分。

第一,<代码>格列斯陷阱.php> 试验基地:在需要时有太多时间来填满内部档案,以在以后添加。 其次,拟进行的第一次测试通过<守则> 测试结果对代码覆盖面进行过滤时增加了这些档案。

abstract class BaseTestCase extends PHPUnit_Framework_TestCase
{
    private static $_codeCoverageFiles = array();

    public static function addDirectoryToCodeCoverageWhitelist($path) {
        self::addFilesToCodeCoverageWhitelist(self::getFilesForDirectory($path));
    }

    public static function addFileToCodeCoverageWhitelist($path) {
        self::addFilesToCodeCoverageWhitelist(array($path));
    }

    public static function addFilesToCodeCoverageWhitelist(array $paths) {
        self::$_codeCoverageFiles = array_merge(self::$_codeCoverageFiles, $paths);
    }

    public static function getFilesForDirectory($path) {
        $facade = new File_Iterator_Facade;
        return $facade->getFilesAsArray($path,  .php );
    }

    private static function setCodeCoverageWhitelist(PHP_CodeCoverage $coverage = null) {
        if ($coverage && self::$_codeCoverageFiles) {
            $coverage->setProcessUncoveredFilesFromWhitelist(true); // pick your poison
            $coverage->filter()->addFilesToWhitelist(self::$_codeCoverageFiles);
            self::$_codeCoverageFiles = array();
        }
    }

    public function runBare() {
        self::setCodeCoverageWhitelist($this->getTestResultObject()->getCodeCoverage());
        parent::runBare();
    }
}

<>Update: 凡是使用黑名单来保持框架班级的人,不像我们所做的那样,展示失败的痕迹,将以下方法添加到上述班级,并将其从<条码>boot锁.php>。 这要求从PHP5.3中获取

    public static function ignoreDirectoryInStackTraces($path) {
        ignoreFilesInStackTraces(self::getFilesForDirectory($path));
    }

    public static function ignoreFileInStackTraces($path) {
        ignoreFilesInStackTraces(array($path));
    }

    public static function ignoreFilesInStackTraces($files) {
        static $reflector = null;
        if (!$reflector) {
            PHPUnit_Util_GlobalState::phpunitFiles();
            $reflector = new ReflectionProperty( PHPUnit_Util_GlobalState ,  phpunitFiles );
            $reflector->setAccessible(true);
        }
        $map = $reflector->getValue();
        foreach ($files as $file) {
            $map[$file] = $file;
        }
        $reflector->setValue($map);
    }
问题回答

我询问了塞巴斯的情况,他确认,从方案上看,没有办法使用《离婚法》。 Filter with PHPUnit 3.6.

我的建议是,在配置文件填满后,通过一个模板和填充添加所需的<代码><directory> nodes,以动态方式创建Sandunit.xml。

也许可以采用一种办法,在今后将试验操作员分类,以注入PHP_CodeCoverage[_Filter]物体。





相关问题
Brute-force/DoS prevention in PHP [closed]

I am trying to write a script to prevent brute-force login attempts in a website I m building. The logic goes something like this: User sends login information. Check if username and password is ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

定值美元

如何确认来自正确来源的数字。

Generating a drop down list of timezones with PHP

Most sites need some way to show the dates on the site in the users preferred timezone. Below are two lists that I found and then one method using the built in PHP DateTime class in PHP 5. I need ...

Text as watermarking in PHP

I want to create text as a watermark for an image. the water mark should have the following properties front: Impact color: white opacity: 31% Font style: regular, bold Bevel and Emboss size: 30 ...

How does php cast boolean variables?

How does php cast boolean variables? I was trying to save a boolean value to an array: $result["Users"]["is_login"] = true; but when I use debug the is_login value is blank. and when I do ...

热门标签