この質問は私の状況に限定されており、(まだ) 解決されていません。ただし、この問題が発生している場合は、トラブルシューティングの手順を実行すると、開始するのに適した方法が得られる場合があります.
Windows 7 で WampServer 2.1 を介して実行されている localhost の Yii Web アプリケーションで単体テストを実行したいと考えています。
<?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
。ワンプを再開しました。エラー報告に変更はありません。
解像度
私のセキュリティ設定は DansGuardian を使用しており、ファイルのダウンロードをブロックする禁止された拡張子の種類の設定を緩めるのを怠っていました。実際、どのタイプも禁止する必要はありません。そのファイルを変更すると、すべてが機能します。おっと、それは私の Linux セットです。PHPUnit はそこで動作しており、WAMP でも動作しています。WAMP で手順を再現することは不可能です。しかし、管理者として cmd.exe を開かなければならなかったことはわかっています。また、ある時点でpear のキャッシュをクリアする必要があり、 Selenium をインストールするため に curl 認識の問題を克服する必要がありました。pear update-channels
pear upgrade-all
pear install --force phpunit/PHPUnit_Selenium