PHP Fatal error: Class 'PHPUnit\Framework\TestCase' nicht gefunden mit PHPUnit 6 und PHP 7.0

Spiele ich mit php 7 und phpunit 6. Hier ist der test, den ich schrieb:

<?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, führen Sie diesen test, habe ich die folgende Fehlermeldung:

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

Installierte ich PHPUnit mit dem Komponisten, hier ist mein Komponist.json-Datei Inhalt:

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

Laut PHPUnit-6-Dokumentation, Ihre tests nun soll PHPUnit erweitert\Framework\TestCase statt PHPUnit_Framework_TestCase.

Ich weiß, es ist nicht ein Problem mit autoloading. Eigentlich, wenn ich ersetzen PHPUnit\Framework\TestCase mit PHPUnit_Framework_TestCase, funktioniert es ganz gut, aber ich Frage mich, warum diese syntax nicht funktioniert.

Ich habe versucht, einige der Forschung auf google, stackoverflow und PHPUnit ' s github-repository, aber konnte nichts finden.

Ich freue mich für Eure Antworten,

BEARBEITEN

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
  • gehen Verkäufer und schauen, ob phpunit da ist oder nicht
  • die test-Datei in den src-Ordner? wenn ja sollte es den DesignPatterns-suffix in den namespace?
  • Hi, ja, phpunit gibt es.
  • Nein, die test-Datei ist nicht im Verzeichnis src/, es ist in einen Test-Ordner
  • wie wollen Sie laden den Ordner test in den autoloader?
  • keine Notwendigkeit zu laden, den Ordner test in den autoloader. Ich erstellt phpunit.xml -Datei entsprechend dem Verzeichnis Test
  • Sie können auch die Antwort aus der folgenden Antwort stackoverflow.com/questions/42811164/..., damit Ihr code kompatibel mit PHPUnit 6 sowie frühere Versionen.

InformationsquelleAutor romaind | 2017-02-14
Schreibe einen Kommentar