我發現PHPUnit的註釋@expectedException
不想從use
語句(我使用psr-0進行自動加載)讀取類名稱空間路徑。PHPUnit @expectedException不尊重namesapce導入
拿這個作爲一個例子:
<?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);
}
}
測試,在運行時,會導致此錯誤:
ReflectionException: Class CollectionOverflowException does not exist
要糾正這種情況,我嘗試添加autoload-dev
我compose.json並再次傾銷自動載入文件:
"autoload-dev": {
"classmap": [
"src/Outrace/Battleship/Exception/"
]
},
或與psr-4:
"autoload-dev": {
"psr-4": {
"Outrace\\Battleship\\Tests\\": "src/Outrace/Battleship/Tests/",
"Outrace\\Battleship\\Exception\\": "src/Outrace/Battleship/Exception/"
}
},
以上都不能解決問題,錯誤會持續存在。
/**
* @expectedException Outrace\Battleship\Exception\CollectionOverflowException
*/
public function testAcceptOnlyMasts()
這是PHPUnit的的限制還是我在這裏做一些錯誤:
但是,如果註釋引用異常類的fullu限定名測試將工作做好?