web-dev-qa-db-ja.com

PHPUnitを動作させる-インクルードパスが正しく設定されていませんか?

私の開発環境でPHPUnitを動作させようとしていますが、スクリプトにPHPUnitを含めることに関して、少し障害があります。インクルードパスをPHP=に設定する必要があることはわかっていますが、コンパイラがPHPUnit_Framework_TestCaseクラスを確認しないと、私が試したすべての組み合わせが失敗します。

PHPおよびPEARで更新を実行しました。PHPUnitはコンピューターにインストールされているので、コマンドラインから問題なくアクセスできます。

PHPUnitは/ usr/share/php/PHPunitにインストールされます

Pearは/ usr/share/php/PEARにあります

行方不明のものはありますか? PHPUnitまたはPEARからの何か)を使用するのは初めてです。私はUbuntu 10.10を使用しています。ご協力いただければ幸いです。

編集-私のインクルードパスには何もありませんPHP ini。今のところコードはただ

<?php
class Stacktest extends PHPUnit_Framework_TestCase
{

}

PHPUnitに関するWeb上のすべての情報について、この少しの情報は非常に欠けているように思われるため、何を含めるか、何をインクルードパスに設定するかわかりません。

21
Jarrod Nettles

(PEARを介して)phpunitを正しくインストールした場合は、インクルードファイルは必要ありません。 phpファイルをテストするためにそれを使用する方法を変更するだけです(たとえば、ブラウザータイプlocalhostに移動してファイルが機能するかどうかをテストするために使用します)。 phpunitを使用すると、コマンドラインを使用できます。 第5章 コマンドラインを使用して同じ例を示します(私はそれが標準だと思います)。したがって、正しくインストールされている場合、これを行うことができます。

  1. ローカルホストのルートにあるファイルExampleTest.php(私にとっては/ var/www):

    class ExampleTest extends PHPUnit_Framework_TestCase
    {
        public function testOne()
        {
            $this->assertTrue(FALSE);
        }
    }
    
  2. コンソール(MacまたはLinuxではターミナル、Winではコマンドプロンプト)を開き、localhostドキュメントルート(ExampleTest.phpを保存した場所)に移動して、次のように入力します。

    phpunit --verbose ExampleTest.php
    
  3. 見るべき:

    PHPUnit 3.4.13 by Sebastian Bergmann.
    
    F
    
    Time: 1 second, Memory: 6.50Mb
    
    There was 1 failure:
    
    1) ExampleTest::testOne
    Failed asserting that <boolean:false> is true.
    
    /var/www/ExampleTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.
    

注:上記はすべて、phpunitが正しくインストールされていること( chapter に記載)を前提とし、その後Apacheを再起動したことを前提としています。

ブラウザでテストを実行したい場合は、次のコードを使用してください

# error reporting
ini_set('display_errors',1);
error_reporting(E_ALL|E_STRICT);

# include TestRunner
require_once 'PHPUnit/TextUI/TestRunner.php';

# our test class
class ExampleTest extends PHPUnit_Framework_TestCase
{
    public function testOne()
    {
        $this->assertTrue(FALSE);
    }
}

# run the test
$suite = new PHPUnit_Framework_TestSuite('ExampleTest');
PHPUnit_TextUI_TestRunner::run($suite);

編集

あなたの質問でちょうどUbuntu 10.10を見つけました。 Ubuntuのインストールについては、これをお勧めします:ターミナルで:

Sudo pear uninstall phpunit/PHPUnit
Sudo apt-get install phpunit
Sudo /etc/init.d/Apache2 restart

注:pearを介してphpunitをインストールしなかった場合は、最初の行を発行しないでください。最後の行が必要なようです(少なくとも私の場合)。

Sudo /etc/init.d/Apache2 reload # Or
Sudo service Apache2 restart
17
Poelinca Dorin

PHPUnit 3.5以降では、オートローダーを自分で含める必要があります。

require 'PHPUnit/Autoload.php'; // PEAR should be in your include_path
26
xrstf

この行をphp.iniに追加します。

include_path=".:/usr/share/php:/usr/share/pear:/usr/share/php/PHPunit:/usr/share/php/PEAR"

ファイルを保存してApacheを再起動します。

また、正しいphp.iniを編集してください。 locate php.iniを使用して、隠れている可能性があるすべての場所を見つけてください。通常は/usrディレクトリの下のどこかにあります。

6
Jeff Davis

Include()またはrequire()を使用するたびに、実際のファイル名の前にdirname(__FILE__)を付けてください。これにより、インクルードするファイルが、インクルードがある実際のファイルを基準にして、指定したパスにあることが保証されます。デフォルトでは、PHPは、プログラムを起動するために呼び出されるファイルを基準にインクルードします。

2
Travis Webb

スクリプトの上部にあるset_include_pathを使用して機能させることができました(ここの例を参照してください http://www.siteconsortium.com/h/p1.php?id=php002 )、次にSeleniumテストを実行していたときも含めなければなりませんでしたが、うまくいきました。

require_once ('PHPUnit/Autoload.php');
require_once 'PHPUnit/Extensions/SeleniumTestCase.php';
0
JTHouseCat