Führen Sie statische Tests für ein bestimmtes Modul aus

7

Ich laufe php bin/magento dev:tests:run static, um meine Codequalität zu überprüfen, aber es dauert sehr lange. Gibt es eine Möglichkeit, sie für ein Modul und / oder ein Thema auszuführen?

Marius
quelle
@KishanPatadia Dies sind Antworten zum Ausführen der UNIT-Tests für ein Modul. Ich frage jetzt nach STATISCHEN Tests.
Marius
Okay. Wenn Sie die Qualitätsprüfung von Erweiterungen meinen, können Sie diesen Link auf github.com/magento/marketplace-eqp
Kishan Patadia
Hmmm ... danke dafür, aber es ist nicht ganz das, was ich frage. Statische Tests sind nicht nur Kodierungsstandards. Ich weiß, wie man PHPCs benutzt, aber mein Problem besteht darin, die statischen Tests für nur ein Modul oder Thema auszuführen.
Marius

Antworten:

3

Ja, es gibt eine Möglichkeit, eine benutzerdefinierte Testsuite entsprechend Ihren Anforderungen auszuführen. Statische Tests werden mit phpunit ausgeführt und die Konfigurationsdatei befindet sich in dev / tests / static / phpunit.xml.dist

Also, aus diesem Pfad heraus:

  1. cp phpunit.xml.dist phpunit.xml
  2. Bearbeiten Sie eine neue Datei mit Ihrem Editor und erstellen Sie eine benutzerdefinierte Testsuite im Element. Weitere Informationen zum Konfigurieren von phpunit mit einer Datei finden Sie in der Dokumentation
  3. Wenn Sie Ihre Testsuite erstellen, geben Sie den Befehl ein php ../../../vendor/bin/phpunit --testsuite="YOUR TESTSUITE NAME"

Das ist alles :)

Es gibt weitere Optionen wie das Ausführen dieser Tests über Ihre IDE, das Anpassen der Testsuite durch Ausschließen oder Auflisten von Dateien usw. Der grundlegendste Ansatz wurde oben beschrieben.

Und eine kleine Ergänzung: Jedes Preset verwendet eine Art Bootstrap, z. static / testsuite / Magento / Test / Js / LiveCodeTest.php für die statische Javascript-Code-Analyse; Es wird Blacklist / Whitelist * .txt verwendet. Sie müssen diese Dateien in Ihren Suiten verwenden und anpassen. Am Ende erfordert es also etwas Arbeit, ist aber machbar.

Konfigurationsbeispiel für weniger statische Tests

Nehmen wir an, wir haben ein Modul Modul / Test mit verwandten * .less-Dateien

  1. Kopieren Sie dev / tests / static / phpunit.xml.dist => dev / tests / static / phpunit.xml. Ändern Sie es dann so, dass es wie folgt aussieht:

    Geben Sie hier die Bildbeschreibung ein

Das Wichtigste ist, dass unsere Testsuite den Attributnamen = "Test Sample" und eine Ziel-PHP-Datei mit Tests hat, die auch als Bootstrap-Datei dient. Sie können entweder Ihre eigenen schreiben oder vorhandene kopieren und ändern sowie den Pfad ändern. Dies bedeutet, dass die gesamte Konfiguration im Modulverzeichnis gespeichert werden kann, aber für dieses Tutorial werde ich so einfach wie möglich vorgehen. Als Referenz überprüfen Sie bitte Hersteller / Magento / Magento2-Basis, dort finden Sie in dev / tests / static eine ähnliche Datei.

  1. Öffnen Sie static / testsuite / Magento / Test / Less / _files / whitelist / common.txt und fügen Sie Glob-Muster oder Muster für den Speicherort der zu testenden Dateien hinzu, z. App / Code / Test / Modul / Ansicht / Web

  2. Öffnen Sie nun das Terminal und gehen Sie zu dev / test / static und führen Sie es aus php ../../../vendor/bin/phpunit --testsuite="Test Sample"

Das ist alles für weniger Testsuite. Für jedes Testpaket können Sie dasselbe tun. Details können variieren, aber der allgemeine Ansatz ist wie von mir beschrieben.

Und letztes Wort: Aus meiner Sicht ist es besser, Live-Linters zu verwenden, die entweder von ide oder Plugins dafür bereitgestellt werden, oder im Fall von CI Tools zu verwenden, die ein bestimmtes CI-Tool bereitstellt.

Bartosz Herba
quelle
Zunächst einmal vielen Dank dafür. Ich bin froh, dass es möglich ist. Aber zweitens ... können Sie ein kleines Beispiel dafür geben, wie es gemacht werden kann? Es wird mir und zukünftigen Lesern helfen. Wie sollte mein phpunit.xmlaussehen wie im Falle Ich möchte alle die statischen Tests für ein Modul namens laufen Test_Samplein sich app/code/Test/Sample/.
Marius
Ok, ich habe meine Antwort aktualisiert.
Bartosz Herba
Klingt nach dem, was ich brauche. Ich werde testen und zurückkommen (wahrscheinlich am Montag) und Ihnen die 50 gefälschten Internetpunkte verleihen. Vielen Dank.
Marius