Unit-Tests
Um Unit-Tests lokal auszuführen, siehe die GitHub Workflows und führe in deinem lokalen Container Folgendes aus:
Unit-Tests der PHP-Module
Mit DDEV
ddev sshcd {zmsadmin, zmscalldisplay, zmsdldb, zmsentities, zmsmessaging, zmsslim, zmsstatistic, zmsticketprinter}./vendor/bin/phpunitMit Podman
podman exec -it zms-web bashcd {zmsadmin, zmscalldisplay, zmsdldb, zmsentities, zmsmessaging, zmsslim, zmsstatistic, zmsticketprinter}./vendor/bin/phpunitNützliche Flags für ./vendor/bin/phpunit:
--display-warnings
--display-deprecations
--display-notices
--display-errors
--display-failures
--debugSonderfälle (zmsapi, zmsdb & zmsclient)
zmsclient:
Für zmsclient benötigst du das PHP-Basis-Image, das einen lokalen Mock-Server startet. Das JSON in den Mocks muss zur Signatur passen, die die Entität in den Anfragen zurückgibt (das ist üblicherweise die Ursache, wenn Tests in zmsclient fehlschlagen).
Mit Docker:
cd zmsclient
docker-compose down && docker-compose up -d && docker exec zmsclient-test-1 ./vendor/bin/phpunitMit Podman:
cd zmsclient
./zmsclient-test
./zmsclient-test --filter "testSetKeyBasic"Das Skript zmsclient-test erkennt und nutzt automatisch Docker oder Podman, startet die Container für einen sauberen Zustand neu und führt die PHPUnit-Tests aus.
Traditionelle Methode (überschreibt lokale DB)
Für die Module zmsapi und zmsdb müssen Testdaten importiert werden. Beachte, dass dabei deine lokale Datenbank überschrieben wird.
zmsapi:
Mit DDEV:
cd zmsapi
rm -rf data
ln -s vendor/eappointment/zmsdb/tests/Zmsdb/fixtures data
ddev ssh
cd zmsapi
vendor/bin/importTestData --commit
./vendor/bin/phpunitMit Podman:
cd zmsapi
rm -rf data
ln -s vendor/eappointment/zmsdb/tests/Zmsdb/fixtures data
podman exec -it zms-web bash
cd zmsapi
vendor/bin/importTestData --commit
./vendor/bin/phpunitzmsdb:
Mit DDEV:
ddev ssh
cd zmsdb
bin/importTestData --commit
./vendor/bin/phpunitMit Podman:
podman exec -it zms-web bash
cd zmsdb
bin/importTestData --commit
./vendor/bin/phpunitPHP-Unit-Tests im Container (empfohlen – isolierte Umgebung)
Führe deine Tests in sauberen, wegwerfbaren Containern aus, damit sie weder dein lokales System noch deine Datenbank beeinträchtigen:
# Web-Container betreten
podman exec -it zms-web bash # Podman
ddev ssh # DDEV
# zmsdb-Tests ausführen
./zmsdb/zmsdb-test # alle Tests
./zmsdb/zmsdb-test --filter="StatusTest::testBasic" # spezifischen Test
# zmsapi-Tests ausführen
./zmsapi/zmsapi-test # alle Tests
./zmsapi/zmsapi-test --filter="StatusGetTest::testRendering" # spezifischen TestVerfügbare PHPUnit-Flags:
# Testauswahl (filter ist ein Regex gegen "Namespace\TestClass::testMethod")
--filter="TestClass::testMethod" # spezifische Testmethode
--filter="TestClass" # alle Tests einer Klasse
--filter="testMethod" # alle Tests mit passendem Methodennamen
--filter="pattern" # Tests nach Regex-Muster
# Ausgabe & Ausführlichkeit
--verbose # detailliertere Ausgabe
--debug # Debug-Informationen
--stop-on-failure # beim ersten Fehler stoppen
--stop-on-error # beim ersten Error stoppen
--stop-on-warning # bei erster Warnung stoppen
# Coverage & Berichte
--coverage-text # Text-Coverage-Bericht
--coverage-html=dir # HTML-Coverage-Bericht
--coverage-clover=file.xml # XML-Coverage-Bericht
# Testausführung
--group="groupName" # Tests einer Gruppe ausführen
--exclude-group="groupName" # Tests einer Gruppe ausschließen
--testsuite="suiteName" # spezifische Test-Suite ausführenBeispiele:
# spezifischen Test mit ausführlicher Ausgabe ausführen
bash zmsdb-test --filter="StatusTest::testBasic" --verbose
# alle Tests einer Klasse, beim ersten Fehler stoppen
bash zmsapi-test --filter="StatusGetTest" --stop-on-failure
# Tests mit Coverage-Bericht ausführen
bash zmsdb-test --coverage-text
# Tests ausführen und eine Gruppe ausschließen
bash zmsapi-test --exclude-group="slow"Unit-Tests von zmscitizenview
Führe Frontend-Unit-Tests mit dem Vitest-/Jest-Setup des Moduls aus:
cd zmscitizenviewnpm testNach Testnamen-Muster filtern:
npm test -- -t "AppointmentView"zmsautomation
zmsautomation ist kein Unit-Test-Modul. Seine API-/UI-Test-Suiten sind in der zmsautomation-Dokumentation beschrieben.