PHPUnit@expectedException不考虑名称APCE导入

PHPUnit@expectedException不考虑名称APCE导入,phpunit,Phpunit,我发现PHPUnit的注释@expectedException不想从use语句中读取类名称空间路径(我使用psr-0进行自动加载) 以此为例: <?php namespace Outrace\Battleship\Tests; use Outrace\Battleship\Collection\MastCollection; use Outrace\Battleship\Exception\CollectionOverflowException; class MastCollecti

我发现PHPUnit的注释
@expectedException
不想从
use
语句中读取类名称空间路径(我使用psr-0进行自动加载)

以此为例:

<?php

namespace Outrace\Battleship\Tests;

use Outrace\Battleship\Collection\MastCollection;
use Outrace\Battleship\Exception\CollectionOverflowException;

class MastCollectionTest extends \PHPUnit_Framework_TestCase
{
    /**
     * @expectedException CollectionOverflowException
     */
    public function testAcceptOnlyMasts()
    {

        $notMastObject = new \stdClass();
        $mastCollection = new MastCollection();
        $mastCollection->attach($notMastObject);
    }
}
或使用psr-4:

"autoload-dev": {
  "psr-4": {
    "Outrace\\Battleship\\Tests\\": "src/Outrace/Battleship/Tests/",
    "Outrace\\Battleship\\Exception\\": "src/Outrace/Battleship/Exception/"
  }
},
上述任何一项都无法解决问题,错误将持续存在

但是,如果注释引用异常类的fullu限定名称,则测试将正常工作:

/**
 * @expectedException Outrace\Battleship\Exception\CollectionOverflowException
 */
public function testAcceptOnlyMasts()

这是PHPUnit的限制还是我在这里做错了什么?

这是PHPUnit工作方式的限制

在内部,它使用php,它期望异常的FQCN。它只接受注释中给定的字符串

当检查异常时,TestCase.php具有以下功能
$reflector=newreflectionclass($this->expectedException)
expectedException
属性通过注释或调用
setExpectedException()
填充

如果使用
setExpectedException()
方法,则可以使用简化名称,因为您可以执行以下操作


/**
 * @expectedException Outrace\Battleship\Exception\CollectionOverflowException
 */
public function testAcceptOnlyMasts()