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
Wejdź do dostawcy i sprawdź, czy jest tam plik phpunit –
plik testowy znajduje się w folderze src? jeśli tak, powinien mieć sufiks DesignPatterns w przestrzeni nazw? – Matteo
Cześć, tak, jest tam phpunit. – romaind