Exécuter des tests pour un module spécifique dans Magento2

52

Exécuter les tests pour Magento php bin/magento dev:tests:runprend beaucoup de temps.
Existe-t-il un moyen d'exécuter les tests pour un module spécifique uniquement?

Je suis un noob en (unité) de test alors ayez pitié.

Marius
la source
Avez-vous essayé de regarder ce que la commande fait? Je veux dire, dans son code, il faut peut-être un autre argument (ou une liste de).
Julien Lachal
1
@ JulienLachal. J'ai essayé ça. Il n'accepte qu'un seul argument (type) possible all, unit, integration, integration-all, static, static-all, integrity, legacy, default. Et certaines options générales comme -h, -q, ...celle-ci sont disponibles pour toutes les commandes. Donc, rien de spécial à leur sujet
Marius

Réponses:

51

Magento 2 utilise le framework phpunit pour exécuter le test. Vous pouvez exécuter test par type et module avec la commande:

{phpunit_executable} -c {Magentoroot}/dev/test/{type}/phpunit.xml[.dist] path/to/module/test/dir

Par exemple:

  • pour exécuter le test unitaire pour le catalogue , vous devez exécuter la commande

    vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist app/code/Magento/Catalog/Test/Unit/

  • pour exécuter le test d' intégration pour le catalogue , vous devez exécuter vendor/phpunit/phpunit/phpunit -c dev/tests/integration/phpunit.xml.dist dev/tests/integration/testsuite/Magento/Catalog

Actuellement, seul le test unitaire est transféré dans les modules. De plus, le test d'intégrité statique et d'intégration fonctionne avec tout le code magento.

KAndy
la source
Donc, d’une manière générale, l’ensemble des tests automatisés reste un désastre même s’ils ont officiellement publié la version 2.0.0?
peedee
@KAndy, j'ai exécuté le test unitaire du module de catalogue, mais cli affiche une erreur comme celle-ci, Erreur fatale: appel de la fonction non définie Magento \ Catalogue \ Block \ Adminhtml \ Produit \ Édition \ Action \ Attribut \ Tab __ () dans / var / www / html / magento2 / vendor / magento / module-catalog / Block / Adminhtml / Produit / Édition / Action / Attribut / Tab / Inventory.php à la ligne 89. Les erreurs dans le module de base sont display.which est la cause de l'erreur. plz l'expliquer.
Rakesh Jesadiya
@RakeshJesadiya, on dirait que votre fichier d'amorçage n'inclut pas app / functions.php où la fonction __ () est définie
KAndy
Ouais .. pour moi, il ne tourne pas du tout sur la version 2.0.2 quand je lance "fournisseur / phpunit / phpunit / phpunit -c dev / tests / unit / phpunit.xml.dist app / code / Magento / Catalogue / Test / Unité / "Dans le répertoire racine magento, cela me donne" PHPUnit 4.1.0 de Sebastian Bergmann. Impossible d'ouvrir le fichier "app / code / Magento / Catalogue / Test / Unit / .php". " ...
Lachezar Raychev
1
@LachezarRaychev Le code de base de Magento n'est pas dans le chemin app / code / Magento. Son déplacé à vendeur / magento. S'il vous plaît essayez cette commandephp vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist vendor/magento/module-catalog/
Franc
15

La réponse de kandy semble être la voie à suivre, mais entre temps, j'ai trouvé un moyen rapide et sale de le faire.

Copier dev/tests/unit/phpunit.xml.distvers dev/tests/unit/phpunit.xmlet remplacer

<directory suffix="Test.php">../../../app/code/*/*/Test/Unit</directory>

avec

<directory suffix="Test.php">../../../app/code/[Namespace]/[Module]/Test/Unit</directory>  

et commentez les autres directorybalises à l'intérieur de la <testsuite>balise.

Lorsque vous avez terminé, annulez vos modifications ou supprimez-les phpunit.xml.

Marius
la source
bonjour marius, comment faire des tests unitaires en utilisant cli pour le module de catalogue? quelle commande nous devons exécuter? le chemin de base est magento2 / bin?
Rakesh Jesadiya
C'est dans la réponse de KAndy. vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist app/code/Magento/Catalog/Test/Unit/
Marius
1
@Rakesh :: s'il vous plaît essayez cette commande mise à jour. php vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist vendor/magento/module-catalog/Les codes de base de Magento sont déplacés vers le chemin fournisseur / magento.
Franc
comment exécuter un test unitaire pour un module personnalisé en utilisant: fournisseur php / phpunit / phpunit / phpunit -c dev / tests / unit / phpunit.xml.disvendor / magento / module-catalog /
Sushivam
@SachinS. Tout comme je l'ai décrit. éditez temporairement le phpunit.xmlfichier et indiquez le chemin du module à tester.
Marius