Führen Sie Tests für ein bestimmtes Modul in Magento2 aus

52

Das Ausführen der Magento-Tests php bin/magento dev:tests:runnimmt viel Zeit in Anspruch .
Gibt es eine Möglichkeit, die Tests nur für ein bestimmtes Modul auszuführen?

Ich bin ein Noob in (Unit-) Tests, also erbarme dich.

Marius
quelle
Haben Sie versucht zu sehen, was der Befehl bewirkt? Ich meine, in seinem Code braucht es vielleicht ein anderes Argument (oder eine andere Liste von).
Julien Lachal
1
@JulienLachal. Versuchte das. Es wird nur ein Argument (Typ) akzeptiert, das sein kann all, unit, integration, integration-all, static, static-all, integrity, legacy, default. Und einige allgemeine Optionen wie -h, -q, ...diese sind für alle Befehle verfügbar. Also nichts besonderes an ihnen
Marius

Antworten:

51

Magento 2 verwendet das phpunit-Framework zum Ausführen von Tests. Sie können den Test nach Typ und Modul mit folgendem Befehl ausführen:

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

Zum Beispiel:

  • Zum Ausführen eines Komponententests für Catalog benötigen Sie den Befehl run

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

  • Um den Integrationstest für Catalog auszuführen, müssen Sie ausführen vendor/phpunit/phpunit/phpunit -c dev/tests/integration/phpunit.xml.dist dev/tests/integration/testsuite/Magento/Catalog

Derzeit ist nur Unit-Test auf Module verschoben. Auch der statische Test und der Integritätstest funktionieren mit allen Magento-Codes.

KAndy
quelle
Also ist das gesamte automatisierte Testen im Allgemeinen immer noch ein Chaos, obwohl sie offiziell 2.0.0 veröffentlicht haben?
Peedee
@ KAndy, ich habe einen Unit-Test für das Katalogmodul ausgeführt, aber CLI zeigt folgenden Fehler an: Schwerwiegender Fehler: Aufruf der undefinierten Funktion Magento \ Catalog \ Block \ Adminhtml \ Product \ Edit \ Action \ Attribute \ Tab __ () in / var / www / html / magento2 / vendor / magento / modulkatalog / Block / Adminhtml / Product / Edit / Action / Attribute / Tab / Inventory.php in Zeile 89. Im Kernmodul werden Fehler angezeigt. Was ist die Fehlerursache? Bitte erklären Sie es.
Rakesh Jesadiya
@ RakeshJesadiya, sieht so aus, als ob Ihre Bootstrap-Datei app / functions.php nicht enthält, wobei function __ () definiert ist
KAndy
Ja, für mich läuft es auf 2.0.2 überhaupt nicht, wenn ich "vendor / phpunit / phpunit / phpunit -c dev / tests / unit / phpunit.xml.dist app / code / Magento / Catalog / Test / Unit" starte / "Im Magento-Stammverzeichnis gibt es mir" PHPUnit 4.1.0 von Sebastian Bergmann. Datei "app / code / Magento / Catalog / Test / Unit / .php" kann nicht geöffnet werden. " ...
Lachezar Raychev
1
@LachezarRaychev Die Magento-Kerncodes befinden sich nicht im Pfad von App / Code / Magento. Es ist zu Vendor / Magento umgezogen. Bitte versuchen Sie diesen Befehlphp vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist vendor/magento/module-catalog/
Franc
15

Kandys Antwortnähte mögen den Weg, aber in der Zwischenzeit habe ich einen schnellen und schmutzigen Weg gefunden, es zu tun.

Kopieren dev/tests/unit/phpunit.xml.distauf dev/tests/unit/phpunit.xmlund ersetzen

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

mit

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

und die anderen directoryTags innerhalb des <testsuite>Tags auskommentieren.

Wenn Sie fertig sind, setzen Sie Ihre Änderungen zurück oder entfernen Sie sie phpunit.xml.

Marius
quelle
hallo marius, wie mache ich einen unit test mit cli für das katalog modul? welchen befehl müssen wir ausführen? base path is magento2 / bin?
Rakesh Jesadiya
Es ist in der Antwort von KAndy. vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist app/code/Magento/Catalog/Test/Unit/
Marius
1
@ Rakesh :: Bitte versuchen Sie diesen aktualisierten Befehl. php vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist vendor/magento/module-catalog/Die Kerncodes von Magento werden in den Vendor / Magento-Pfad verschoben.
Franc
So führen Sie einen Komponententest für ein benutzerdefiniertes Modul durch: PHP-Anbieter / PHPUNIT / PHPUNIT / PHPUNIT -c dev / tests / unit / PHPUNIT.xml.disvendor / magento / module-catalogue /
Sushivam
@SachinS. Genau wie ich es beschrieben habe. Bearbeiten Sie die phpunit.xmlDatei vorübergehend und geben Sie den Pfad zu dem Modul an, das Sie testen möchten.
Marius