【发布时间】:2013-01-28 03:03:26
【问题描述】:
这个问题是我的本地情况,尚未解决(尚未)。但是,如果您遇到此问题,故障排除步骤可能会为您提供一个很好的开始途径。
我想在 localhost 上的 Yii Web 应用程序中运行单元测试,该应用程序通过 Windows 7 上的 WampServer 2.1 运行。
<?php
class LittleTest extends CTestCase
{
public function testApprove()
{
$value1 = "1";
$this->assertEquals($value1,$value1);
}
}
?>
我在尝试运行测试时收到一个致命错误。这是我在 Windows 命令行上运行它的方式:
C:\wamp\www\app\protected\tests>
C:\wamp\www\app\protected\tests>cd unit
C:\wamp\www\app\protected\tests\unit>phpunit LittleTest.php
我收到(连同一些堆栈跟踪行):
PHP Fatal error:
class 'CTestCase' not found in [path to file]\LittleTest.php on line 4
到此为止的故障排除步骤:
应用程序运行。应用的默认索引页面看起来不错,我已经使用gii工具创建了一个模型类。
从命令行,我可以看到 php 和 phpunit 可用(我已经检查了我的 pear 安装以确保一切正常):
C:\wamp\www\app\protected\tests>
C:\wamp\www\app\protected\tests>phpunit --version
PHPUnit 3.7.13 by Sebastian Bergmann.
C:\wamp\www\app\protected\tests>
C:\wamp\www\app\protected\tests>php --version
PHP 5.3.5 (cli)
... etc
display_errors 已打开。 display_startup_errors 已开启。
我尝试重命名类,使名称与文档名称不匹配:
class LittleTestTweak extends CTestCase
我不确定运行测试的确切命令,所以我尝试了以下变体:
php LittleTest.php
我还尝试在文件夹结构的不同位置运行它。这是直接结构:
/tests
| bootstrap.php
| my_tree.txt
| phpunit.xml
| WebTestCase.php
|
|---- /fixtures
|---- /functional
| SiteTest.php
|
|---- /report
`---- /unit
LittleTest.php
我还检查了我的php.ini 以获得 PEAR 的路径;据我所知,这是正确的(但我该如何测试呢?):
include_path=".;C:\wamp\bin\php\php5.3.5\PEAR;C:\wamp\www\app
更多信息
对此的回应:
cd wamp\www\app\protected\tests
phpunit unit\LittleTest.php
我收到这个:
Warning: require_once(PHPUnit/Extensions/SeleniumTestCase.php):
failed to open stream: No such file or directory in
C:\wamp\www\yii\framework\test\CWebTestCase.php on line 12
Call Stack:
0.0007 339624 1. {main}() C:\wamp\bin\php\php5.3.5\phpunit:0
0.0164 698440 2. PHPUnit_TextUI_Command::main()
C:\wamp\bin\php\php5.3.5\phpunit:46
0.0164 698856 3. PHPUnit_TextUI_Command->run()
C:\wamp\bin\php\php5.3.5\PEAR\PHPUnit\TextUI\Command.php:129
0.0164 698856 4. PHPUnit_TextUI_Command->handleArguments()
C:\wamp\bin\php\php5.3.5\PEAR\PHPUnit\TextUI\Command.php:138
0.0289 1220944 5. PHPUnit_TextUI_Command->handleBootstrap()
C:\wamp\bin\php\php5.3.5\PEAR\PHPUnit\TextUI\Command.php:606
0.0300 1233328 6. PHPUnit_Util_Fileloader::checkAndLoad()
C:\wamp\bin\php\php5.3.5\PEAR\PHPUnit\TextUI\Command.php:778
0.0330 1233424 7. PHPUnit_Util_Fileloader::load()
C:\wamp\bin\php\php5.3.5\PEAR\PHPUnit\Util\Fileloader.php:76
0.0334 1238096 8. include_once
('C:\wamp\www\app\protected\tests\bootstrap.php')
C:\wamp\bin\php\php5.3.5\PEAR\PHPUnit\Util\Fileloader.php:92
0.0412 1520256 9. require_once
('C:\wamp\www\app\protected\tests\WebTestCase.php')
C:\wamp\www\app\protected\tests\bootstrap.php:8
0.0413 1520520 10. YiiBase::autoload()
C:\wamp\www\yii\framework\YiiBase.php:0
0.0423 1543904 11.
include('C:\wamp\www\yii\framework\test\CWebTestCase.php')
C:\wamp\www\yii\framework\YiiBase.php:395
Fatal error: require_once(): Failed opening required
'PHPUnit/Extensions/SeleniumTestCase.php'
(include_path='.;C:\wamp\bin\php\php5.3.5\PEAR\pear;C:\wamp\bin\php\php5.3.5\pear')
in C:\wamp\www\yii\framework\test\CWebTestCase.php on line 12
Call Stack:
0.0007 339624 1. {main}() C:\wamp\bin\php\php5.3.5\phpunit:0
0.0164 698440 2. PHPUnit_TextUI_Command::main()
...et cetera...
失败的要求是PHPUnit/Extensions/SeleniumTestCase.php。不知道是不是PHPUnit是本地安装在C:\wamp下的问题。
我打开了我的php.ini 并添加到include_path:C:\wamp\bin\php\php5.3.5\PEAR\PHPUnit\Extensions。重新启动wamp。错误报告没有变化。
分辨率
我的安全设置使用了 DansGuardian,但我忽略了放宽禁止扩展类型的设置,这会阻止文件下载。事实上,我不在乎禁止任何类型,修改该文件可以让一切正常工作。 糟糕,这是我的 Linux 设置。 PHPUnit 在那里工作,它也在 WAMP 上工作。在 WAMP 上重新创建步骤是不可能的;但我知道我必须open cmd.exe as administrator 和pear update-channels、pear upgrade-all 等。我还必须在某一时刻clear pear's cache,我必须overcome an issue with curl 识别才能安装Selenium:
pear install --force phpunit/PHPUnit_Selenium
【问题讨论】:
-
你能粘贴准确的错误信息吗?
-
不幸的是,这个 windows 命令窗口不允许我复制到剪贴板。但是等一下,我会努力的。 .. 好的,完成
-
从 protected\tests 目录中尝试:
phpunit unit/LittleTest.php -
我尝试并收到很多错误报告,表明我的配置错误。不幸的是,我现在必须离开这个项目几个小时,但我会尽快回来。
-
好的,将新错误添加到问题中