Testen

PHP-Testing

Chamilo verwendet PHPUnit für Backend-Tests.

Einrichtung der Testdatenbank

Tests erfordern eine dedizierte Datenbank. Erstellen Sie .env.test.local mit Ihren Testdatenbank-Zugangsdaten:

DATABASE_HOST='127.0.0.1'
DATABASE_PORT='3306'
DATABASE_NAME='chamilo_test'
DATABASE_USER='root'
DATABASE_PASSWORD='root'

Initialisieren Sie dann die Testdatenbank:

php bin/console --env=test cache:clear
php bin/console --env=test doctrine:database:create
php bin/console --env=test doctrine:schema:create
php bin/console --env=test doctrine:fixtures:load --no-interaction

Um nach Schemaänderungen zurückzusetzen:

php bin/console --env=test doctrine:schema:update --force --complete

Tests ausführen

Testverzeichnis

Tests befinden sich im Verzeichnis tests/:

Testarten

  • Unit-/Integrationstests — PHPUnit-Tests in CoreBundle/ und CourseBundle/; die meisten greifen auf eine echte Datenbank zu (via dama/doctrine-test-bundle)

  • Funktionale (API-)Tests — Erweitern AbstractApiTest und testen HTTP-Endpunkte von Anfang bis Ende

  • Behat-Tests — Akzeptanztests auf Browser-Ebene in tests/behat/features/ (siehe unten)

Behat (End-to-End) Tests

Chamilo verfügt über eine Behat-TestSuite für Akzeptanztests auf Browser-Ebene. Es erfordert eine laufende Chamilo-Instanz, Chrome und ChromeDriver.

Konfigurieren Sie die Basis-URL in tests/behat/behat.yml, bevor Sie die Tests ausführen.

Frontend-Prüfungen

PHP-Codequalität

Chamilo verwendet ECS (Easy Coding Standard), PHPStan und Psalm für die Codequalität. Composer-Kurzbefehle sind für jeden verfügbar:

Hinweis: Es gibt kein php-cs-fixer in diesem Projekt. ECS (symplify/easy-coding-standard) ist das Code-Stil-Tool.

Continuous Integration

Pull Requests werden automatisch von vier GitHub Actions-Workflows überprüft:

Workflow
Was wird ausgeführt

phpunit.yml

PHPUnit-TestSuite

format_code.yml

ECS-Code-Stil-Überprüfung

php_analysis.yml

Psalm, Doctrine-Schema-Validierung, Sicherheitsprüfung

behat.yml

Behat End-to-End-Tests

Zuletzt aktualisiert

War das hilfreich?