Test unitaires

Confusion la plus totale

a marqué ce sujet comme résolu.

Bonjour à tous !

Dans le cadre d’un projet, j’aimerais mettre en place un système de tests unitaires avec Symfony 4. Malheureusement, malgré de nombreuses recherches, je n’arrive pas à faire fonctionner tout le bazar.

En regardant la doc , cela n’a pas l’air compliqué.

En fait, j’ai deux problèmes :

1) Impossible de lancer l’instruction ./bin/phpunit dans la console Windows. J’ai droit au fameux message m’indiquant que le ’.’ n’est pas reconnu comme commande. Par contre, quand je lance

1
phpunit tests/Entity

Cela ne veut pas fonctionner car il me dit qu’il ne trouve pas la classe TestCase dans mon fichier.

2) Le deuxième problème, c’est que j’ai vu plein de choses différentes en ce qui concerne l’utilisation de PHPUnit avec Symfony et par moment, j’ai l’impression que la doc n’est pas à jour ou qu’il manque quelque chose. Entre certains qui disent qu’il faut utiliser

Voilà. Du coup, je suis assez confus quand au mode de fonctionnement de PHPUnit avec Symfony. Comment l’installer correctement et le faire fonctionner ?

EDIT : Finalement, par un miracle, j’ai réussi à faire fonctionner !

Comme un imbécile, il fallait juste faire

1
php bin/phpunit tests

tests correspond au dossier des tests.

+1 -0

Je préfère faire un 2è post.

Même si phpunit lance les test, il me reste un problème.

Voici ma structure :

  • src
    • Entity
      • Calculator.php
  • tests
    • Entity
      • CalculatorTest.php

(J’ai volontairement omis les autres dossiers habituels de Symfony).

Dans ma classe de test, j’instancie un Calculator via $calculator = new Calculator(); mais quand je lance le test, il me dit qu’il ne trouve pas la classe Calculator.

CalculatorTest.php

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
<?php
namespace App\Tests\Entity;

use App\Entity\Calculator;
use PHPUnit\Framework\TestCase;


class CalcutatorTest extends TestCase
{
    public function testAdd()
    {
            $calculator = new Calculator(); //La ligne qui fait tout planter

            $result = $calculator->add(10,5);

            $this->assertEquals(15, $result);
    }
}

Je ne vois pas vraiment ce qu’il ne joue pas étant donné que mon IDE me trouve bien tout ce qui touche à la classe.

Salut !

J’ai eu le même problème récemment alors que j’essayais justement d’introduire des tests unitaires dans un projet Symfony 3.4.

Est-ce que tu as bien créé un fichier phpunit.xml.dist à la racine de ton projet ?

Voici le mien :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="UTF-8"?>

<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
         backupGlobals="false"
         colors="true"
         bootstrap="vendor/autoload.php"
         failOnRisky="true"
         failOnWarning="true"
>
    <php>
        <server name="KERNEL_CLASS" value="AppKernel" />
        <env name="SYMFONY_DEPRECATIONS_HELPER" value="weak" />
    </php>
    <testsuites>
        <testsuite name="Project Test Suite">
            <directory>tests</directory>
        </testsuite>
    </testsuites>
</phpunit>

Ce qui m’avait fait galérer, c’était le fait que j’oubliais cette ligne :

1
bootstap="vendor/autoload.php"

qui permettait justement de charger les classes métier à tester.

Donne m’en des nouvelles.

+0 -0

Je suis avec Symfony et normalement, tout est fait automatiquement avec l’installation via composer.

En fait, les tests fonctionne car si je fait un simple assertTrue(true), le test passe. C’est dès le moment où j’instancie que cela plante et je ne sais pas pourquoi car les chemins sont correctes vu que c’est l’IDE qui me les proposent. ^^

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte