无法在phpunit testdirectory

时间:2016-02-11 21:17:37

标签: php phpunit composer-php

我正在试图找出phpunit,但是当我尝试在tesfile中实例化一个对象时,我一直收到以下错误:

Fatal error: Class stats\Baseball not found in c:\xampp\htdocs\stats\Test\BaseballTest.php

我有以下结构:

根/ Baseball.php

namespace stats;

class Baseball {
    //some code
}

根/ phpunit.xml

<?xml version="1.0" encoding="UTF-8"?>
<phpunit colors="true" bootstrap="vendor/autoload.php">
    <testsuites>
        <testsuite name="Application Test Suite">
            <directory>./Test/</directory>
        </testsuite>
    </testsuites>
</phpunit>

根/测试/ BaseballTest.php

namespace stats\Test;

use stats\Baseball;

class BaseballTest extends \PHPUnit_Framework_TestCase {
     $baseball = new Baseball(); // doesn't work
}

根/ composer.json

{
    "require": {
    },
    "require-dev": {
        "phpunit/phpunit": "*"
    },
    "autoload": {
        "psr-0": {
            "stats": ""
        }
    }
}

(stats文件夹是根目录。)

当我将BaseballTest.php移出测试文件夹并将其放入根目录时似乎工作正常。我正在使用composer来执行

如果你们能帮助我,那会很棒!

提前致谢!

1 个答案:

答案 0 :(得分:1)

使用当前目录布局和编写器配置,Baseball类应位于stats目录中。

您可以将其保留在根目录中,但是您需要切换到psr-4自动加载器,它允许您跳过命名空间映射中包含的目录:

{
    "require": {
    },
    "require-dev": {
        "phpunit/phpunit": "*"
    },
    "autoload": {
        "psr-4": {
            "stats\\": ""
        }
    }
}

名称空间前缀名称的尾随斜杠很重要(stats\\)。

有关自动加载标准的更多信息:

我还建议您使用更标准的目录布局。将您的类放入src目录,将测试放入tests目录。命名空间大多是大写的。这是它的样子:

<?php
// src/Baseball.php

namespace Stats;

class Baseball
{
}
<?php
// tests/BaseballTest.php

namespace Stats\Tests;

use Stats\Baseball;

class BaseballTest extends \PHPUnit_Framework_TestCase
{
    public function testIt()
    {
        $baseball = new Baseball();
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<phpunit colors="true" bootstrap="vendor/autoload.php">
    <testsuites>
        <testsuite name="Application Test Suite">
            <directory>./tests/</directory>
        </testsuite>
    </testsuites>
</phpunit>
{
    "require": {
    },
    "require-dev": {
        "phpunit/phpunit": "*"
    },
    "autoload": {
        "psr-4": {
            "Stats\\": "src"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Stats\\Tests\\": "tests"
        }
    }
}