web-dev-qa-db-fra.com

PHP Erreur fatale: Classe non trouvée - PHPUnit

J'essaie d'utiliser PHPUnit dans un projet PHP. Voici la structure de mon projet (les fichiers sont en italique)

  • contrôleurs

    • Pages.php
  • tests

    • pagesTest.php
  • vendeur

    • poubelle
      • phpunit.bat
  • composer.json

Mes dossiers:

composer.json

{
    "require-dev": {
        "phpunit/phpunit":"5.5.4"
    }
}

Pages.php

<?php
namespace controllers

class Pages
{
    public function render()
    {
        return 'Hello World';
    }

}

pagesTest.php

<?php

class PagesTest extends PHPUnit_Framework_TestCase
{
    public function testRenderReturnsHelloWorld()
    {
        $pages = new \controllers\Pages();
        $expected = 'Hello Word';
        $this->assertEquals($expected, $pages->render());
    }
}

Quand j'ouvre la ligne de commande j'écris:

C:\xampp\htdocs\PHPUnitTestProject\vendor\bin>phpunit ../../tests/PagesTest.php

Je reçois ce message d'erreur: PHP Fatal error: Class 'controllers\Pages' not found in C:\xampp\htdocs\PHPUnitTestProject\tests\pagesTest.php on line 7

C'est un problème de chemin. Je pense que c'est parce qu'il recherche C:\xampp\htdocs\PHPUnitTestProject\vendor\bin\controllers\Pages() qui n'existe pas.
Cela devrait être C:\xampp\htdocs\PHPUnitTestProject\controllers\Pages()

5
splunk

Vous devez pointer sur la classe testée, donc dans pagesTest.php, ajoutez un require:

require __DIR__ . "/../controllers/Pages.php";

Ou si vous utilisez le chargement automatique, vous pouvez initialiser le chargement automatique dans votre ligne de commande

phpunit --bootstrap src/autoload.php

Ou vous pouvez configurer un fichier de configuration phpunit.xml comme dans cet exemple (à partir de la page PHPUnit à laquelle j'ai lié ci-dessus):

<phpunit bootstrap="src/autoload.php">
  <testsuites>
    <testsuite name="money">
      <directory>tests</directory>
    </testsuite>
  </testsuites>
</phpunit>

Ce que vous utilisez ensuite avec l'option --configuration.

12
Katie

Appelez phpunit à partir du dossier racine:

$ cd C:\xampp\htdocs\PHPUnitTestProject\
$ vendor\bin\phpunit tests/PagesTest.php
1
JorgeObregon