Drupal 8 ergänzt das auf Simpletest basierende Testframework mit PHPUnit und Simpletest könnte entfernt werden in Drupal 9.
Ich habe noch kein Upgrade auf Drupal 8 durchgeführt, aber ich habe mich gefragt, wie ich vorhandene Tests in PHPUnit (um dem Trend zu folgen) für Drupal 7 schreiben kann, statt in Simpletest?
Gibt es eine Methode oder ein Modul zur Integration von PHPUnit in Drupal 7?
Es gibt nur wenige wie Phpunit oder Drunit , aber sie sind nicht für Drupal 7.
Antworten:
Sie können PHPUnit-Tests ausführen, indem Sie Drupal in jede Ihrer Testdateien booten. Es ist nicht ideal, aber es funktioniert.
quelle
PHPUnit bietet eine nette API zum Erstellen der Objekte, der einfache Test des Drupal dagegen nicht. In gist ist eine Bibliothek für die Integration von PHPUnit in Drupal 7 verfügbar .
Um diese Skripte auszuführen, müssen Sie dieses Gist-Repository auschecken . Um Unit-Tests in der Kommandozeile auszuführen, gehen Sie einfach zu einer Drupal-Site ( zB
<DRUPAL_ROOT>/sites/default
) und verwenden Sie dphpunit.bash genau so, wie Sie den Befehl phpunit verwenden würden.Das Skript besteht aus 3 Dateien:
Quelle: http://devblog.more-onion.com/content/writing-unit-tests-drupal-7
bootstrap.inc.php
dphpunit.bash
drun-phpunit.php
Für die Integration von PHPUnit mit Drupal 7 steht eine weitere Bibliothek zur Verfügung: https://github.com/sebastianbergmann/phpunit
Weitere Informationen zu diesen Skripten finden Sie hier: http://thomaslattimore.com/blog/using-phpunit-with-drupal-7
quelle
Es gibt eine Problemumgehung für die Konfigurationsdatei.
Inhalt: https://gist.github.com/permanovd/cb9c02920c49a29c97653f4f697147b1
Das ist alles. Jetzt können Sie Ihre Tests auf verschiedene Arten starten.
1. CLI
phpunit -c phpunit.xml.dist QuestionValidationValueOptionsInputTest /yoursite.dir/public_html/profiles/standard/modules/some_module/tests/QuestionValidationTest.php
wo:
2. IDE (phpstorm)
Sie müssen eine Testlaufkonfiguration hinzufügen
Und es ist nicht erforderlich, in jeden Test Drupal-Bootstrap-Code einzubeziehen.
Hinweis
Möglicherweise haben Sie Probleme mit Tests aufgrund einer falschen PHP-Version Ihrer Umgebung.
Weitere Lektüre:
https://phpunit.de/manual/current/en/organizing-tests.html
quelle