2011-01-04 5 views
2

Ich habe ein MacBook Pro, installiert PEAR, installiert PHPUnit, so in der Befehlszeile I phpunit geben kann und ich erhalte die Nutzung Hilfe.Wie starte ich mit PHPUnit in der Kommandozeile?

Jetzt möchte ich bekommen einen Test gehen, so dass ich von dort bauen kann.

Ich habe eine Datei index.php mit diesem Inhalt benannt:

<?php 

require_once '?????'; 


class Product { 

    protected $id; 

    public function __construct($id) 
    { 
     $this->id = $id; 
    } 

    public function get_id() 
    { 
     return $this->id; 
    } 

} 

class ProductTest extends PHPUnit_Framework_TestCase 
{ 
    function testBasis() 
    { 
     $instance = new Product(1); 

     $this->assertInstanceOf('Product',$instance); 
     $this->assert($instance->get_id(), 1); 
    } 
} 

in der Befehlszeile, möchte ich in das Verzeichnis gehen, in dem sich die Datei befindet, und geben Sie so etwas wie:

phpunit ????? 

Was sind die nächsten Schritte, damit ich die obige Klasse mit PHPUnit von der Kommandozeile aus testen kann?

+0

http://www.phpunit.de/manual/current/en/writing-tests-for-phpunit.html –

+0

Ja, das ist die Dokumentation, die ich lese (Kapitel 4), wo Kapitel 3 zeigt, wie ich pear/phpunit installieren muss, und Kapitel 4 geht davon aus, dass der Rest installiert ist, aber wenn ich "phpunit productTest" eintippe, kann es nicht gefunden werden "./ProductTest.php" und wenn ich "phpunit index.php" eintippe, heißt es "callt o undefined method ProductTest :: assert()", ich muss ein einfaches Beispiel bekommen, damit ich diese Dokumentation benutzen kann. –

+1

Becouse assert ist nicht definiert, schauen Sie sich Kapitel 21 an, um alle verfügbaren Funktionen zu sehen (zB sieht aus, als würden Sie versuchen, assert zu verwenden, wenn Sie wirklich assertEquals() benötigen) allso assertInstanceOf() muss durch isInstanceOf ersetzt werden ()) –

Antwort

7
  1. Wenn Sie phpunit proprely installiert Sie müssen nicht die Linie umfassen.
  2. class ProductTest extends PHPUnit_Framework_TestCase
  3. Speichern Sie die Datei ProductTest.php
  4. in der Befehlszeile Navigation mit „cd“ in das Verzeichnis, in dem Sie ProductTest.php gespeichert
  5. Wenn Sie phpunit installiert proprely sollten Sie in der Lage zu geben phpunit --verbose ProductTest.php

Ihre ProductTest.php Datei wird wie folgt aussehen müssen:

<?php 

class Product { 

    protected $id; 

    public function __construct($id) 
    { 
     $this->id = $id; 
    } 

    public function get_id() 
    { 
     return $this->id; 
    } 

} 

class ProductTest extends PHPUnit_Framework_TestCase 
{ 
    function testBasis() 
    { 
     $instance = new Product(1); 

     $this->isInstanceOf('Product',$instance); 
     $this->assertEquals($instance->get_id(), 1); 
    } 
} 

?> 

in der Befehlszeile phpunit --verbose ProductTest läuft, folgende Ausgabe:

PHPUnit 3.4.13 by Sebastian Bergmann. 

ProductTest 
. 

Time: 0 seconds, Memory: 6.50Mb 

OK (1 test, 1 assertion) 
[email protected]:/var/www$ phpunit --verbose ProductTest 
PHPUnit 3.4.13 by Sebastian Bergmann. 

ProductTest 
. 

Time: 0 seconds, Memory: 6.50Mb 

OK (1 test, 1 assertion) 
+0

ok, ich habe das gemacht und es sagt mir 'PHP Fataler Fehler: Aufruf zu undefinierter Methode ProductTest :: assert()' was sagt mir, dass es 'PHPUnit_Framework_TestCase' nicht findet oder was könnte der Grund sein? –

+0

in meinem Code benutze ich nie assert aber assertEquals –

+0

kopieren Sie meinen genauen Code, speichern Sie es in einer Datei namens ProductTest.php und Sie werden sehen, alle Tests werden bestanden. –

0

ich die phpunit Version 3,4-3,6 mit these instructions aufgerüstet und es löste mein assertInstanceOf Funktion Problem fehlt. wenn jemand auf diesen Thread wegen des gleichen Problems kam, sollte er sich überlegen, auf die neueste Version von phpunint test zu aktualisieren