30 votes

Impossible d'exécuter les tests unitaires dans l'IDE de PHPStorm

Quand je cours vendor/bin/phpunit mes tests s'exécutent tous avec succès. Cependant, lorsque je clique avec le bouton droit de la souris sur un fichier de tests et que je clique sur "Exécuter les tests", j'obtiens le résultat suivant :

/usr/local/bin/php -dxdebug.coverage_enable=1 /private/var/folders/bj/t2w187x158g7rgghctgknwb80000gn/T/ide-phpunit.php --coverage-clover /Users/bkuhl/Library/Caches/WebIde70/coverage/services$tests.coverage --no-configuration /Users/bkuhl/Projects/myproject/services/app/tests
Testing started at 3:09 PM ...

Fatal error: Class IDE_PHPUnit_Framework_TestListener contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (PHPUnit_Framework_TestListener::addRiskyTest) in /private/var/folders/bj/t2w187x158g7rgghctgknwb80000gn/T/ide-phpunit.php on line 504
PHP Fatal error:  Class IDE_PHPUnit_Framework_TestListener contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (PHPUnit_Framework_TestListener::addRiskyTest) in /private/var/folders/bj/t2w187x158g7rgghctgknwb80000gn/T/ide-phpunit.php on line 504
Call Stack:
    0.0008     340040   1. {main}() /private/var/folders/bj/t2w187x158g7rgghctgknwb80000gn/T/ide-phpunit.php:0

PHP Stack trace:
PHP   1. {main}() /private/var/folders/bj/t2w187x158g7rgghctgknwb80000gn/T/ide-phpunit.php:0

Process finished with exit code 255

J'ai configuré PHPStorm pour utiliser path/to/vendor/autoload.php

enter image description here J'ai temporairement changé le chemin de ce répertoire pour les besoins de cette capture d'écran, mais c'est un chemin parfaitement valide.

Quelqu'un a-t-il rencontré des problèmes en utilisant la capacité de PHPStorm à exécuter vos tests ?

composer.json :

"require-dev": {
    "way/generators": "dev-master",
    "way/laravel-test-helpers": "dev-master",
    "mockery/mockery": "*",
    "codeception/aspect-mock": "*",
    "phpunit/phpunit": "3.9.*@dev"
},

43voto

LazyOne Points 25070

PhpStorm utilise un wrapper/helper script lors de l'exécution des tests PHPUnit (à des fins d'intégration : suivi de la progression de l'exécution, stack trace etc).

Pour le moment, l'aide script ne supporte pas PHPUnit 3.8 ou 3.9 -- seulement 3.7 et moins.

Billet correspondant : http://youtrack.jetbrains.com/issue/WI-21666 -- surveillez-le (étoile/vote/commentaire) pour être averti quand il sera résolu.

P.S.
Ce problème est maintenant corrigé et la correction sera disponible dans la prochaine version publique de l'EAP (plus récente que la 134.1456 actuelle).

6voto

Ragnar Lodbrok Points 53

Un utilisateur nommé andriy komm ajout d'une solution basée sur la correction manuelle du plugin php dans l'IDE dans le fil de discussion du ticket ( http://youtrack.jetbrains.com/issue/WI-21666 ) :

Une solution de contournement jusqu'à ce que le problème soit résolu :

  1. allez dans /plugins/php/lib

  2. faites une sauvegarde de php.jar

  3. Utilisez l'outil dont vous disposez pour ouvrir le fichier, généralement zip ou d'autres outils de compression ou sous ubuntu le rouleau de fichier.

  4. Allez dans scripts/phpunit.php

  5. Modifiez-le, en recherchant la classe "IDE_PHPUnit_Framework_TestListener" et en y ajoutant la ligne suivante :

public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time) {} 6. Sauvegardez le fichier et mettez à jour le php.jar.

Note 1 : selon le système d'exploitation et l'outil que vous utilisez, vous pouvez avoir à décompresser le .jar pour le modifier et le compresser à nouveau en jar. En utilisant file roller sur ubuntu, je peux sauter cette étape, éditer le fichier et mettre à jour le fichier jar directement.

Modifier le fichier /tmp/ide-phpunit.php n'aide pas, car il est remplacé par le fichier écrasé par le fichier phpunit.php, que j'ai mentionné ci-dessus.

Note 2 : En fonction de la version, vous pouvez également trouver le php.jar ailleurs :

Soit ici : Allez dans le répertoire personnel de votre utilisateur (Windows/linux) et cherchez un répertoire caché .Webide, alors que c'est un nombre dépendant de votre version de phpstorm (par exemple .Webide70).

Ou ici : Je pense que les versions précédentes étaient nommées comme .IntelliJIdea. tandis que est un nombre dépendant de votre version de phpstorm.

Et là, utilisez le même chemin (/plugins/php/lib)

Cela a fonctionné pour moi (Windows 7, PHPStorm 7, #PS-133.982).

6voto

Dinar Points 41

Une autre solution : Définissez

"phpunit/phpunit": "3.7"

sur compositeur.json

et exécuter

composer update 

Le problème sera alors résolu.

cela a marché pour moi aussi...

IntelliJ IDEA n'exécute pas les tests PHPUnit 4.0

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