2017-02-14 3 views
6

ich mit php 7 und phpunit spiele 6. Hier ist der Test, den ich schrieb:PHP Fatal error: Class 'PHPUnit Framework Testcase' nicht mit PHPUnit gefunden 6 und PHP 7.0

<?php declare(strict_types=1); 

namespace Test; 

use DesignPatterns\Observer\User; 
use DesignPatterns\Observer\UserObserver; 
use PHPUnit\Framework\TestCase; 

class ObserverTest extends TestCase 
{ 
    public function testChangeInUserLeadsToUserObserverBeingNotified() 
    { 
     $observer = new UserObserver(); 

     $user = new User(); 
     $user->attach($observer); 

     $user->changeEmail('[email protected]'); 
     $this->assertCount(1, $observer->getChangedUsers()); 
    } 
} 

Als ich versuchte, diesen Test ausführen, ich die folgende Fehlermeldung bekam:

PHP Fatal error: Class 'PHPUnit\Framework\TestCase' not found in /home/.../.../Test/ObserverTest.php on line 9 

ich PHPUnit mit dem Komponisten installiert ist, hier ist mein composer.json Dateiinhalt:

{ 
    "require": { 
     "phpunit/phpunit": "^6.0" 
    }, 
    "autoload": { 
     "psr-4": {"DesignPatterns\\": "src/"} 
    } 
} 

Laut PHPUnit 6 documentation sollen Ihre Tests jetzt PHPUnit \ Framework \ TestCase anstelle von PHPUnit_Framework_TestCase erweitern.

Ich weiß, es ist kein Problem mit Autoloading. Eigentlich, wenn ich PHPUnit \ Framework \ TestCase durch PHPUnit_Framework_TestCase ersetze, funktioniert es gut, aber ich habe mich gefragt, warum diese Syntax nicht funktioniert hat.

Ich habe versucht, etwas über Google, Stackoverflow und PHPUnit Github-Repository zu recherchieren, konnte aber nichts finden.

ich mich für Ihre Antworten suchen,

EDIT

Dies ist, wie meine Dateien organisiert sind:

src/ 
├── DataMapper 
│   ├── StorageAdapter.php 
│   ├── UserMapper.php 
│   └── User.php 
├── Observer 
│   ├── UserObserver.php 
│   └── User.php 
Test/ 
├── DataMapperTest.php 
└── ObserverTest.php 
+0

gehen Sie in Anbieter und schauen, ob PHPUNIT ist oder nicht –

+0

die Testdatei ist in der Src-Ordner? Wenn ja, sollte es das Suffix DesignPatterns im Namensraum haben? – Matteo

+0

Hallo, ja, phpunit ist da. – romaind

Antwort

7

fand ich die Antwort:

Ich war Executing Mein Test mit dieser Befehlszeile:

phpunit Test/ObserverTest.php 

PHPUnit ist weltweit auf meinem Computer installiert, aber es ist die 5.1.3 Version:

phpunit -v 

PHPUnit 5.1.3 by Sebastian Bergmann and contributors. 

Runtime:  PHP 7.0.13-0ubuntu0.16.04.1 with Xdebug 2.4.0 
Configuration: /home/.../.../DesignPatterns/phpunit.xml 

und die Syntax PHPUnit \ Framework \ Testcase nur mit PHPUnit 6

Jetzt funktioniert, wenn ich laufen php vendor/bin/phpunit Test/ObserverTest.php, es funktioniert perfekt ...

Verwandte Themen