Bonjour,

C'est la première fois que je réalise les tests unitaires sur un projet Symfony, ceci dans le but de mettre en place une usine logicielle via les Actions de GitHub.

Ma configuration

<?xml version="1.0" encoding="UTF-8"?>

<!-- https://phpunit.readthedocs.io/en/latest/configuration.html -->
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="bin/.phpunit/phpunit.xsd"
         backupGlobals="false"
         colors="true"
         bootstrap="vendor/autoload.php"
>
    <php>
        <ini name="error_reporting" value="-1" />
        <server name="APP_ENV" value="test" force="true" />
        <server name="SHELL_VERBOSITY" value="-1" />
        <server name="SYMFONY_PHPUNIT_REMOVE" value="" />
        <server name="SYMFONY_PHPUNIT_VERSION" value="7.5" />
    </php>

    <testsuites>
        <testsuite name="Project Test Suite">
            <directory>tests</directory>
            <exclude>tests/Controller/Controller</exclude>
        </testsuite>
    </testsuites>

    <filter>
        <whitelist processUncoveredFilesFromWhitelist="true">
<!--            <directory>./src/</directory>-->
<!--            <directory suffix=".php">src</directory>-->
            <directory>src/Controller</directory>
            <directory>src/Data</directory>
            <directory>src/Data</directory>
            <directory>src/Data</directory>
            <directory>src/Entity</directory>
            <directory>src/Entity</directory>
            <directory>src/Service</directory>
        </whitelist>
    </filter>

    <listeners>
        <listener class="Symfony\Bridge\PhpUnit\SymfonyTestsListener" />
    </listeners>
</phpunit>

Je constate que la couverture de code ne prend pas en compte les objets dans le dossier Controller du projet.

Ma couverture de code actuelle

Code Coverage Report:    
  2020-08-12 10:16:13    

 Summary:                
  Classes: 55.56% (5/9)  
  Methods: 87.18% (34/39)
  Lines:   93.67% (74/79)

\App\Data\Data::App\Data\Data\AbstractData
  Methods: 100.00% ( 3/ 3)   Lines: 100.00% (  4/  4)
\App\Data\Data::App\Data\Data\User
  Methods: 100.00% ( 7/ 7)   Lines: 100.00% ( 14/ 14)
\App\Data\Exception\Email::App\Data\Exception\Email\EmailInvalidFormatException
  Methods: 100.00% ( 1/ 1)   Lines: 100.00% (  2/  2)
\App\Data\ValueObject::App\Data\ValueObject\Email
  Methods: 100.00% ( 3/ 3)   Lines: 100.00% (  8/  8)
\App\Entity\Entity::App\Entity\Entity\AbstractEntity
  Methods:  80.00% ( 4/ 5)   Lines:  88.89% (  8/  9)
\App\Entity\Entity::App\Entity\Entity\User
  Methods:  87.50% (14/16)   Lines:  93.33% ( 28/ 30)
\App\Service\DTO::App\Service\DTO\UserDTO
  Methods: 100.00% ( 2/ 2)   Lines: 100.00% ( 10/ 10)

En vous remerciant par avance pour votre aide.

2 réponses


Tu as un <exclude>tests/Controller/Controller</exclude> dans ta config.
Ca doit venir de là

Mirri421
Auteur

Ce "exclude" concerne un dossier qui contient un objet qui n'est là que pour servir de base aux tests, même en retirant le exclude, les Controller ne sont pas pris en compte (les Controllers sont dans le répertoire tests/Controller).

Il a été mis en place pour éviter un warning de PhpUnit sur la classe ControllerTest qui ne contient aucun test et qui est hérité des TestController.