Ich werde Ihnen nur meine Gedanken dazu geben, ich kann in einigen Punkten falsch liegen, aber vielleicht wird es einige Dinge klarstellen:
Gibt es einen Grund, warum M2 Testbibliotheken (PHPUnit und PHP_CS) aus dem Jahr 2014 anstelle einer neuen verwendet?
Ich vermute, als das Magento 2 vor einigen Jahren mit der Entwicklung begann, nutzte das Team die damals verfügbare Bibliothek. Da sie viele Tests in Magento 2 geschrieben haben, bleiben sie wahrscheinlich bei der Version, die sie zum Zeitpunkt der Erstellung der ersten Tests verwendet haben, um die Tests nicht zu unterbrechen . Ich bin mir ziemlich sicher, dass sie das irgendwann in einer Hauptversion aktualisieren können. Sie können jetzt im Forum Feature-Anfragen dazu stellen: https://community.magento.com/t5/Magento-2-Feature-Requests-and/idb-p/feature-requests
Ist es normal, dass die Ausgabe dieses Tests wie ein Durcheinander aussieht und es schwer zu verstehen ist, was und wo etwas falsch passiert? Ich vergleiche es mit der Ausgabe von Codequalitätstests für CSS / JS und es ist ein Albtraum. Gibt es einen besseren Reporter oder eine andere Möglichkeit, einen aussagekräftigen Bericht zu erhalten, anstatt etwas, das wie ein PHP-Backtrace aussieht?
Ja, die Standardausgabe von PHPUnit ist nicht besonders schön. Die meisten IDE unterstützen PHPUnit und geben einebesserschönere Ausgabe . Hier ist zum Beispiel die offizielle Dokumentation zum Ausführen der Tests in PHPStorm: http://devdocs.magento.com/guides/v2.0/test/unit/unit_test_execution_phpstorm.html Es gibt auch Tools wie VisualPHPUnit, die eine GUI für die Komponententests bereitstellen : https://github.com/VisualPHPUnit/VisualPHPUnit
Gibt es einen Grund, warum es so langsam ist? Die Analyse von Vorlagendateien dauert ca. 7-8 Minuten. Die meisten Front-End-Tests dauern im schlimmsten Fall einige Sekunden, sodass kein Live-Feedback zu Problemen möglich ist.
Erstens enthält Magento 2 viele Tests, die sich definitiv auf die Leistung auswirken (aber hey, genau das ist erforderlich, damit Ihr Code richtig abdeckt;)). Ich bin mir ziemlich sicher, dass Vinai Kopp einige Leistungsverbesserungen erwähnt hat, die Sie tun können, um die Tests schneller laufen zu lassen . Ich hoffe, er gibt uns einige Einblicke, wenn er aus den Ferien zurück ist.
Wie führe ich diese Art von Tests durch, wenn wir ein einzelnes Modul (dh ein Thema) und keine ganze Magento 2-Instanz (CI-Tests) haben?
Meinen Sie damit, die Tests für ein Modul durchzuführen? Ja, das können Sie definitiv. Ich schlage vor, Sie überprüfen die Antwort von KAndy (er ist Teil des Magento 2-Teams) : Führen Sie Tests für ein bestimmtes Modul in Magento2 durch
Es sieht so aus, als hätte PHP_CS bereits einen einfachen Wrapper für Gulp, aber ich bin mir nicht sicher, wo die Konfiguration gespeichert ist. Es ist in der Datei /.php_cs?
Ich bin mir nicht sicher, wo dieser einfache Wrapper ist. Ich denke nicht, dass es die .php_cs
Datei ist. Soweit ich weiß, wird diese Datei nur für die statischen Überprüfungen vor dem Festschreiben von GitHub verwendet
Das sind ziemlich viele Fragen gleichzeitig, aber ich kann zumindest einige beantworten:
Die Hauptentwicklung in Magento 2 begann um 2014, daher verwendeten sie die damals verfügbaren Tools. Als PHPUnit 5 herauskam, gab es bereits eine große Anzahl von Tests, die nicht mit der neuen Version kompatibel waren ( ein Beispiel finden Sie in diesem Forenthread ). Es ist daher verständlich, dass sie ein Update verschoben haben.
Ich nehme an, die Gründe, bei einer alten PHP_CS-Version zu bleiben, sind ähnlich, obwohl ich hier kein konkretes Beispiel habe.
IDEs wie PHPStorm sind gut in diese Tools integriert, sodass Sie Code-Sniffer-Ergebnisse direkt in den Quelldateien sehen und eine schöne Benutzeroberfläche für PHPUnit-Tests erhalten.
Außerdem verfügt PHPUnit über verschiedene Ausgabeoptionen. Mit dem
--testdox
Argument erhalten Sie beispielsweise eine lesbare Checkliste mit bestandenen und fehlgeschlagenen Tests. Es bietet weniger Infos, aber eine lesbare Übersicht. Sie können es auch im HTML-Format mit erhalten--testdox-html=OUTPUTFILE
. Ebenso können Sie den Code Coverage Report in HTML mit abrufen--coverage-html OUTPUTDIR
.Die nützlicheren Ausgabeformate sind jedoch XML- und JSON-Formate, die von anderen Anwendungen wie VisualPHPUnit oder CI-Servern gelesen werden können.
PHPUnit-Parameter für die Berichterstellung:
Weitere Informationen: https://phpunit.de/manual/current/en/textui.html
PHP_CS-Parameter für die Berichterstellung
PHP_CS hat auch verschiedene Berichtsformate:
(andere Formate: emacs, svnblame, gitblame)
Weitere Informationen: https://github.com/squizlabs/PHP_CodeSniffer/wiki/Reporting
Ich kann nicht sagen, warum PHP_CS nur für Vorlagendateien 8 Minuten benötigt, aber es sollte Ihrem Beobachter möglich sein, nur geänderte Dateien zu überprüfen. Die PHPStorm-Integration macht das ganz gut.
Einfach ausführen,
phpcs /path/to/theme
um nur Dateien in diesem Verzeichnis zu überprüfen.Es sieht nicht so aus, als ob dieser Wrapper einen Datei-Watcher enthält, daher sehe ich keinen Vorteil.
Die
.php_cs
Datei definiert, welche Dateien überprüft und welche Codierungsstandards verwendet werden sollen. Dies ist eine PHP_CS-Konfigurationsdatei und unabhängig vom gulp-Wrapper.quelle
dev/tests/static/testsuite/Magento/Test/_files/changed_files*
(mit denen generiert werden kannget_github_changes.php
) und einige der Tests nur diese Dateien verarbeiten. Im Übrigen sehe ich keine Möglichkeit, sie pro Modul / Thema einzuschränken. Was Sie tun können, ist eine einzelne Testsuite auszuführen, z. B. mitphpunit --testsuite "Less Static Code Analysis"
(siehephpunit.xml.dist
Liste der Testsuiten ) 5.) Ja, das wäre.php_cs