2017-02-14 26 views
6

gram z php 7 i PHPUnit 6. Tutaj jest test pisałem:PHP Fatal error: Class 'PHPUnit Framework TestCase' Nie znaleziono z PHPUnit 6 i 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()); 
    } 
} 

Kiedy próbowałem aby uruchomić ten test, mam następujący komunikat o błędzie:

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

zainstalowałem PHPUnit z kompozytorem, tu jest mój zawartość pliku composer.json:

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

Zgodnie z PHPUnit 6 documentation, twoje testy mają teraz rozszerzyć PHPUnit \ Framework \ TestCase zamiast PHPUnit_Framework_TestCase.

Wiem, że to nie problem z automatycznym ładowaniem. Właściwie, jeśli zamieniam PHPUnit \ Framework \ TestCase na PHPUnit_Framework_TestCase, to działa dobrze, ale zastanawiałem się, dlaczego ta składnia nie działa.

Próbowałem niektórych badań na google, stackoverflow i repozytorium github PHPUnit, ale nie mogłem znaleźć niczego.

szukam swoimi odpowiedziami do przodu,

EDIT

ten sposób moje pliki są zorganizowane:

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

Wejdź do dostawcy i sprawdź, czy jest tam plik phpunit –

+0

plik testowy znajduje się w folderze src? jeśli tak, powinien mieć sufiks DesignPatterns w przestrzeni nazw? – Matteo

+0

Cześć, tak, jest tam phpunit. – romaind

Odpowiedz

7

znalazłem odpowiedź:

byłem excuting mój test z tą linią komend:

phpunit Test/ObserverTest.php 

PHPUnit zainstalowany jest globalnie na moim komputerze, ale jest to wersja 5.1.3:

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 

I składnia PHPUnit \ Framework \ TestCase działa tylko z PHPUnit 6

Teraz, jeśli biegnę php vendor/bin/phpunit Test/ObserverTest.php, działa idealnie ...

Powiązane problemy