4

この質問は私の状況に限定されており、(まだ) 解決されていません。ただし、この問題が発生している場合は、トラブルシューティングの手順を実行すると、開始するのに適した方法が得られる場合があります.


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 ツールを使用してモデル クラスを作成しました。

コマンドラインから、私は見ることができphpphpunit利用可能です(そして、すべてがうまくいっていることを確認するために、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.iniPEAR へのパスも確認しました。私が知る限り、それは正しいです (しかし、どうすればテストできますか?):

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_pathC:\wamp\bin\php\php5.3.5\PEAR\PHPUnit\Extensions。ワンプを再開しました。エラー報告に変更はありません。

解像度

私のセキュリティ設定は DansGuardian を使用しており、ファイルのダウンロードをブロックする禁止された拡張子の種類の設定を緩めるのを怠っていました。実際、どのタイプも禁止する必要はありません。そのファイルを変更すると、すべてが機能します。おっと、それは私の Linux セットです。PHPUnit はそこで動作しており、WAMP でも動作しています。WAMP で手順を再現することは不可能です。しかし、管理者として cmd.exe を開かなければならなかったことはわかっています。また、ある時点でpear のキャッシュをクリアする必要があり、 Selenium をインストールするため に curl 認識の問題を克服する必要がありました。pear update-channelspear upgrade-all

pear install --force phpunit/PHPUnit_Selenium
4

1 に答える 1

1

phpunitを使用してYiiで単体テストを実行するには、基本的に構成をセットアップし、必要なクラス(主にテストに関連する)を自動ロードするprotected / tests/bootstrap.phpファイルをphpunitにロードさせる必要があります。bootstrap.phpファイルはyiit.phpをロードし、実際に必要なクラスを自動ロードします。

これで、phpunitの実行時にコマンドラインオプションを使用してこのすべての構成をロードするか、protected / tests/phpunit.xmlファイルから構成を自動的に読み取ることができます。

後者の方法では、phpunitが呼び出されるディレクトリにphpunit.xmlファイルが含まれている必要があり、YiiのデフォルトのWebアプリケーションでは、このディレクトリはprotected/testsです。したがって、テストを実行するには、次のことを行う必要があります。

cd wamp\www\app\protected\tests
phpunit unit\LittleTest.php
于 2013-02-12T19:04:21.200 に答える