wake-up-neo.com

PHPUnit zum Laufen bringen - Pfad nicht richtig setzen?

Ich versuche PHPUnit in meiner Entwicklungsumgebung zum Laufen zu bringen, aber ich habe ein bisschen den Weg gebremst, wenn es darum geht, PHPUnit in meine Skripte aufzunehmen. Ich weiß, dass ich den Include-Pfad auf PHP setzen muss, aber jede Kombination, die ich ausprobiert habe, schlägt fehl, ohne dass der Compiler die Klasse PHPUnit_Framework_TestCase sieht.

Ich habe gerade Updates auf PHP und PEAR ausgeführt und PHPUnit ist auf dem Computer installiert, da ich über die Befehlszeile darauf zugreifen kann.

PHPUnit ist unter/usr/share/php/PHPunit installiert.

Birne ist bei/usr/share/php/PEAR

Fehlt mir etwas? Dies ist mein erster Versuch, PHPUnit oder sogar etwas von PEAR für diese Angelegenheit zu verwenden. Ich bin auf Ubuntu 10.10. Jede Hilfe wäre dankbar.

Bearbeiten - Der Include-Pfad in meinem PHP -Ini enthält nichts. Im Moment ist der Code gerade

<?php
class Stacktest extends PHPUnit_Framework_TestCase
{

}

Ich habe keine Ahnung, was in den Include-Pfad aufgenommen werden soll oder nicht, weil es so aussieht, als würde dieses kleine Informationsstück für alle Informationen über PHPUnit im Web kritisch fehlen.

20
Jarrod Nettles

Wenn Sie phpunit korrekt installiert haben (über PEAR), ist keine Include-Datei erforderlich. Sie müssen lediglich die Art und Weise ändern, in der Sie sie zum Testen von PHP-Dateien verwenden (z. B. verwenden Sie sie zum Testen, ob die Datei funktioniert, indem Sie zum Browsertyp localhost wechseln). Mit phpunit können Sie die Befehlszeile verwenden. Kapitel 5 gibt dasselbe Beispiel mit der Befehlszeile (ich würde davon ausgehen, dass es ein Standard ist). Wenn Sie es richtig installiert haben, können Sie Folgendes tun:

  1. Die Datei ExampleTest.php befindet sich im Stammverzeichnis von localhost (für mich ist dies/var/www):

    class ExampleTest extends PHPUnit_Framework_TestCase
    {
        public function testOne()
        {
            $this->assertTrue(FALSE);
        }
    }
    
  2. Öffnen Sie eine Konsole (Terminal unter Mac oder Linux, Eingabeaufforderung unter Windows), navigieren Sie zu Ihrem localhost-Dokumentstammverzeichnis (wo Sie ExampleTest.php gespeichert haben), und geben Sie Folgendes ein:

    phpunit --verbose ExampleTest.php
    
  3. Das solltest du sehen:

    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.
    

Hinweise: Bei allen oben genannten Voraussetzungen wird davon ausgegangen, dass Sie phpunit korrekt installiert haben (wie in Kapitel 3 angegeben) und anschließend Apache neu gestartet haben.

wenn Sie wirklich Tests in Ihrem Browser ausführen möchten, verwenden Sie den folgenden Code

# 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);

Bearbeiten 

Sie haben gerade Ubuntu 10.10 in Ihrer Frage gesehen. Für die Ubuntu-Installation empfehle ich Folgendes:

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

Hinweis: Geben Sie nicht die erste Zeile aus, wenn Sie Phpunit nicht über pear installiert haben. Die letzte Zeile scheint notwendig zu sein (in meinem Fall zumindest).

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

Ab PHPUnit 3.5 müssen Sie den Autoloader selbst einbinden:

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

Fügen Sie diese Zeile Ihrem php.ini hinzu:

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

Speichern Sie die Datei und starten Sie Apache neu.

Stellen Sie außerdem sicher, dass Sie den korrekten php.ini bearbeiten. Verwenden Sie locate php.ini, um alle Orte zu finden, an denen es sich möglicherweise versteckt. Es befindet sich normalerweise irgendwo im Verzeichnis /usr.

6
Jeff Davis

Stellen Sie sicher, dass Sie bei jeder Verwendung von include () oder requir () den tatsächlichen Dateinamen mit dirname(__FILE__) voranstellen. Dadurch wird sichergestellt, dass sich die hinzugefügte Datei in dem Pfad befindet, den Sie relativ zur tatsächlichen Datei angeben, in der sich das Include befindet. Durch Deftault enthält PHP relativ zu der Datei, die zum Starten des Programms aufgerufen wird. 

2
Travis Webb

Ich konnte es mit set_include_path oben in meinem Skript zum Laufen bringen (siehe Beispiel hier http://www.siteconsortium.com/h/p1.php?id=php002 ), und dann hatte ich auch zu integrieren, da ich einen Selenium-Test durchgeführt habe, aber es hat funktioniert.

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