3 votes

La couverture de code PHPUnit ne fonctionne pas avec la configuration

La configuration de PHPUnit et le rapport de couverture fonctionnent bien sans filtre de liste blanche. Cependant, dès que j'en ajoute un, le rapport semble ne se générer que partiellement, comme si PHPUnit s'arrêtait inopinément. Je ne reçois aucune erreur ni aucun avertissement.

Mon configuratoon ressemble à ceci :

<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="./bootstrap.php"
         colors="true">
    <testsuites>
        <testsuite name="...">
            <testsuite name="...">
                <directory>./path/to/suite</directory>
            </testsuite>
            <testsuite name="...">
                <directory>./path/to/suite2</directory>
            </testsuite>
            <testsuite name="...">
                <directory>./path/to/suite3</directory>
            </testsuite>
        </testsuite>
    </testsuites>

    <filter>
        <whitelist>
            <directory suffix=".php">../path/to/files</directory>
        </whitelist>
    </filter>

    <logging>
        <log type="coverage-html" target="log/" charset="UTF-8" yui="true" />
    </logging>
</phpunit>

Une idée de ce qui pourrait clocher ?

2voto

rr. Points 2268

Il s'est avéré qu'il y avait un script arrêtant le code procédural dans les fichiers que je mettais en liste blanche.

1voto

HMR Points 5459

Désolé de déterrer une vieille histoire, mais j'ai cherché sur Google "phpunit code coverage not working" et cette page est apparue.

J'ai laissé la couverture du code suivre son cours (je pense que xdebug est utilisé pour cela) et tout s'est bien passé pendant un certain temps.

Ensuite, lorsque j'ai créé un nouveau test, il a soudainement cessé de fonctionner, le code qui s'exécutait était marqué comme non couvert.

Les classes de test que j'ai créées avec phpunit : phpunit-skelgen --test

Celui-ci crée des annotations de couverture comme : @covers MyClass::someMethod

Les supprimer a résolu le problème pour moi, xdebug a été utilisé à nouveau et a soudainement eu une couverture de 100%.

Une remarque sur la couverture : le simple fait d'appeler une méthode une fois la couvre dans le rapport, mais la plupart du temps, elle ne peut pas être considérée comme couverte. L'appeler avec des valeurs nulles ou invalides la couvre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X