phpunit 抛出未捕获的异常'PHPUnit_Framework_Exception
Posted
技术标签:
【中文标题】phpunit 抛出未捕获的异常\'PHPUnit_Framework_Exception【英文标题】:phpunit throws Uncaught exception 'PHPUnit_Framework_Exceptionphpunit 抛出未捕获的异常'PHPUnit_Framework_Exception 【发布时间】:2011-08-12 06:46:21 【问题描述】:我有一个 Zend Framework 项目,想用单元测试来测试它。
在测试文件夹中,我有phpunit.xml
如下;
<phpunit bootstrap="./application/bootstrap.php" colors="true">
<testsuite name="Application Test Suite">
<directory>./</directory>
</testsuite>
<filter>
<whitelist>
<directory suffix=".php">../application/</directory>
<exclude>
<directory suffix=".phtml">../application/</directory>
<file>../application/Bootstrap.php</file>
<file>../application/controllers/ErrorController.php</file>
</exclude>
</whitelist>
</filter>
<logging>
<log type="coverage-html" target="./log/reprot" charset="UTP-8"
yui="true" highlight = "true" lowUpoerBound="50" highLowerBound="80"/>
<log type="textdox" target="./log/testdox.html" />
</logging>
我在 /tests/application 文件夹中有bootstrap.php
,如下所示:
<?php
error_reporting(E_ALL | E_STRICT);
// Define path to application directory
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../../application'));
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'testing'));
// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));
require_once 'Zend/Loader/Autoloader.php';
require_once 'controllers/ControllerTestCase.php';
Zend_Loader_Autoloader::getInstance();
当我转到命令行时,运行以下命令
phpunit --configuration phpunit.xml
抛出异常:
PHP 致命错误:带有消息的未捕获异常“PHPUnit_Framework_Exception” '“Application Test Suite.php”和“Application Test Suite.php”都不能 打开。在 D:\PHP\php5\PEAR\PHPUnit\Util\Skeleton\Test.php:102 堆栈跟踪: #0 D:\PHP\php5\PEAR\PHPUnit\TextUI\Command.php(157): PHPUnit_Util_Skeleton_Test- >__construct('应用测试...', '') #1 D:\PHP\php5\PEAR\PHPUnit\TextUI\Command.php(129): PHPUnit_TextUI_Command->运行 (数组,真) #2 D:\PHP\php5\phpunit(53): PHPUnit_TextUI_Command::main() #3 主要 在第 102 行的 D:\PHP\php5\PEAR\PHPUnit\Util\Skeleton\Test.php 中抛出
我该如何解决?
【问题讨论】:
【参考方案1】:我在相同的设置下遇到了同样的问题。据我了解,较新版本的 PHPUnit 至少需要一项实际测试才能正常运行。创建一个简单的测试后,它就可以工作了。
myProject/tests/application/DemoTest.php
<?php
class DemoTest extends ControllerTestCase
public function setUp()
parent::setUp();
public function testCanDoUnitTest()
$this->assertTrue(true);
【讨论】:
【参考方案2】:您会注意到它抛出了异常,因为它正在寻找与您为测试套件提供的name
同名的文件。您需要实际编写一个测试套件,然后将该测试套件的名称提供给您的配置:http://www.phpunit.de/manual/3.2/en/organizing-test-suites.html
【讨论】:
我在包含 bootstrap.phpaddTestSuite('MyApp'); // ... 返回 $suite; 还是一样的错误 您是否更改了您在 XML 中提供的名称?这需要直接对应于测试套件类的文件名减去扩展名。因此,如果您刚刚发布的代码在MyApp.php
中,那么您的 xml 应该如下所示:<testsuite name="MyApp">
而不是 <testsuite name="Application Test Suite">
是的,我已经在xml文件中改了名字,报错是一样的
@ratzip:怀疑你是否有完全相同的错误。请发布新的错误消息,除非它完全相同。
现在,错误消失了,但它给出了另一个错误,***.com/questions/5789733/…,我是 zend 和 phpunit 的新手,它真的让我发疯,你能帮我解决这个问题吗?【参考方案3】:
我注意到您没有使用包含多次出现的<testsuite>
的<testsuites>
。
这是我的 phpunit.xml,它适用于 Zend Framework 项目:
<testsuites>
<testsuite name="UnitTests">
<directory>./library</directory>
</testsuite>
<testsuite name="ApplicationTests">
<directory>./application</directory>
</testsuite>
</testsuites>
【讨论】:
以上是关于phpunit 抛出未捕获的异常'PHPUnit_Framework_Exception的主要内容,如果未能解决你的问题,请参考以下文章
Symfony/PhpUnit - 如何测试服务中是不是抛出异常