2017-02-14 59 views
6

Ben php 7 ve Burada PHPUnit 6. ile oynuyorum Yazdığım testtir:PHP Ölümcül hata: Class 'PHPUnit Framework dizge' PHPUnit 6 ve PHP ile bulunmayan 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()); 
    } 
} 

Denedim Bu testi çalıştırmak için, aşağıdaki hata iletisi aldım:

{ 
    "require": { 
     "phpunit/phpunit": "^6.0" 
    }, 
    "autoload": { 
     "psr-4": {"DesignPatterns\\": "src/"} 
    } 
} 
: Ben besteci ile PHPUnit yüklü

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

, burada benim composer.json dosya içeriğiPHPUnit 6 documentation'a göre, testleriniz artık PHPUnit_Framework_TestCase yerine PHPUnit \ Framework \ TestCase 'i genişletiyor.

Otomatik yükleme ile ilgili bir sorun olmadığını biliyorum. Aslında, PHPUnit \ Framework \ TestCase'i PHPUnit_Framework_TestCase ile değiştirirseniz, yalnızca iyi çalışır, ancak bu sözdiziminin neden çalışmadığını merak ediyordum.

Google, stackoverflow ve PHPUnit'in github deposunda biraz araştırma yaptım, ancak hiçbir şey bulamadım.

Ben excuting edildi:

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

satıcınıza git ve phpunit var mı, bak yoksa –

+0

test dosyası src klasöründe mi? eğer evet, isim alanında DesignPatterns son ekine sahip olmalı? – Matteo

+0

Merhaba, evet, phpunit var. – romaind

cevap

7

Ben cevap buldu: Ben cevaplar için sabırsızlanıyorum

,

DÜZENLEME

Bu benim dosyalarım organize edilmesidir Bu komut satırı ile yaptığım test:

phpunit Test/ObserverTest.php 

PHPUnit bilgisayarımda küresel yükledim, ancak 5.1.3 sürümü olan: Ben çalıştırırsanız, 6

Şimdi PHPUnit \ Framework \ dizge sadece PHPUnit ile çalışır

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 

Ve sözdizimi php vendor/bin/phpunit Test/ObserverTest.php, mükemmel çalışıyor ...