我在 5.3 中使用命名空间并尝试使用 Symfony2 框架测试 PHPUnit 中的预期异常。
我期待抛出异常,当我使用
$this->setExpectedException('ImageResizerException');
我收到以下错误:
塞巴斯蒂安伯格曼的 PHPUnit 3.7.13。
从 /var/www/branches/3.6.0/api/app/phpunit.xml.dist 读取的配置
.E.......
时间:1 秒,内存:18.25Mb
有 1 个错误:
1) AssetManagerBundle\Tests\Services\ImageResizerTest::testOriginalFile ReflectionException: 类 ImageResizerException 不存在
失败!测试:19,断言:54,错误:1。
我有以下结构:
- AssetManagerBundle\Services\ImageResizer.php
- AssetManagerBundle\Services\Exceptions\ImageResizerException.php
- AssetManagerBundle\Tests\Services\ImageResizerTest.php
我的测试课:
<?php
namespace AssetManagerBundle\Tests\Services;
use AssetManagerBundle\Services\ImageResizer;
use AssetManagerBundle\Services\Exceptions\ImageResizerException;
class ImageResizerTest extends \PHPUnit_Framework_TestCase
{
public function testOriginalFile()
{
$ir = new ImageResizer();
// test default value
$this->assertEquals('', $ir->getOriginalFile());
// test invalid filename
$this->setExpectedException('ImageResizerException');
$ir->setOriginalFile('/tmp/test.file');
$this->assertEquals('/tmp/test.file', $ir->getOriginalFile());
// test valid filename
$temp_name = tempnam(sys_get_temp_dir(), 'test_'.time());
$handle = fopen($temp_name, 'w+');
fwrite($handle, ' ');
fclose($handle);
$ir->setOriginalFile($temp_name);
$this->assertEquals($temp_name, $ir->getOriginalFile());
}
// more code....
}
我是否必须为 PHPUnit 做一些特别的事情才能看到我的异常类?
PHP版本:
带有 Suhosin-Patch (cli) 的 PHP 5.3.10-1ubuntu3.5(构建时间:2013 年 1 月 18 日 23:45:59)版权所有 (c) 1997-2012 PHP Group Zend Engine v2.3.0,版权所有 (c) 1998-2012 Zend Technologies with Xdebug v2.1.0, 版权所有 (c) 2002-2010, Derick Rethans