Das sind ziemlich viele Fragen gleichzeitig, aber ich kann zumindest einige beantworten:
- Gibt es einen Grund, warum M2 Testbibliotheken (PHPUnit und PHP_CS) aus dem Jahr 2014 anstelle einer neuen verwendet?
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.
- 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?
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:
Code Coverage Options:
--coverage-clover <file> Generate code coverage report in Clover XML format.
--coverage-crap4j <file> Generate code coverage report in Crap4J XML format.
--coverage-html <dir> Generate code coverage report in HTML format.
--coverage-php <file> Export PHP_CodeCoverage object to file.
--coverage-text=<file> Generate code coverage report in text format.
Default: Standard output.
--coverage-xml <dir> Generate code coverage report in PHPUnit XML format.
Logging Options:
--log-junit <file> Log test execution in JUnit XML format to file.
--log-tap <file> Log test execution in TAP format to file.
--log-json <file> Log test execution in JSON format.
--testdox-html <file> Write agile documentation in HTML format to file.
--testdox-text <file> Write agile documentation in Text format to file.
Weitere Informationen: https://phpunit.de/manual/current/en/textui.html
PHP_CS-Parameter für die Berichterstellung
PHP_CS hat auch verschiedene Berichtsformate:
--report=xml PHP_CS XML format
--report=checkstyle Checkstyle XML format
--report=csv CSV
(andere Formate: emacs, svnblame, gitblame)
Weitere Informationen: https://github.com/squizlabs/PHP_CodeSniffer/wiki/Reporting
- 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.
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.
- 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?
Einfach ausführen, phpcs /path/to/theme
um nur Dateien in diesem Verzeichnis zu überprüfen.
- 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?
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.