Fehlermeldung "Configuration file for environment test not found." bei Ausführung der Unit Tests

Problem 

Ich möchte die Unit Tests unter UliCMS 2019.2.1 oder einer neueren Version ausführen, erhalte jedoch bei Aufruf von ./run-tests.sh bzw. ./run-tests.bat die folgende Fehlermeldung.

Configuration file for environment test not found.

Ursache

Angefangen mit UliCMS 2019.2.1 laufen die Unit Tests in einer eigenen Umgebung , für die noch keine Konfigurationsdatei erstellt wurde.

Lösung:

Nehmen Sie folgenden Code, passen Sie die MySQL- bzw. MariaDB Zugangsdaten an und speichern Sie die Datei unter ULICMS_ROOT/content/configurations/test.php

ULICMS_ROOT ist hierbei als Platzhalter für das Hauptverzeichnis ihrer UliCMS Installation zu verstehen..

<?php
class CMSConfig extends BaseConfig {
    
// MySQL Zugangsdaten, der User muss die Berechtigungen haben,
    // Datenbankschemas und Tabellen anlegen und löschen zu dürfen
    // Die Nutzung des root Users sollte auf einem Produktivsystem
    // aus Sicherheitsgründen vermieden werden.
    
public $db_server "localhost";
    public 
$db_user "uli";
    public 
$db_password "topsecret";

    
// Wir haben eine gesonderte temporäre Datenbank zur Ausführung der Tests
    
public $db_database "ulicms_test";

    public 
$db_prefix "ulicms_";
    public 
$db_type "mysql";
    public 
$debug true;
    public 
$log_requests false;

    
// Strict Mode, bedeutet: Wenn Fehler bei SQL Migrations auftreten,
    // wird die Migration abgebrochen.
    
public $dbmigrator_strict_mode true;

    
// Wenn eine Datenbank nocht nicht existert wird versucht diese anzulegen.
    // Außerdem werden die Migrations automatisch ausgeführt
    
public $dbmigrator_auto_migrate true;

    
// Nach der Basis Migration können weitere *.sql scripts ausgeführt werden
    // beispielsweise um Testdaten (Fixtures) zu erstellen.
    // Hier wird ein Array mit absoluten Pfaden erwartet
    // Pfad-Konstanten wie z.B. ULICMS_ROOT können verwendet werden
    
public $dbmigrator_initial_sql_files = array("ULICMS_ROOT/lib/migrations/up/opt/democontent.full.sql");

    
// Nach dem Abschluss der Tests wird die Datenbank gelöscht
    // so dass wenn man die Tests das nächste mal ausführt, wieder eine frische Datenbank erstellt wird.
    
public $dbmigrator_drop_database_on_shutdown true;
}

Mit dieser Konfigurations wird jeder Testlauf in einer frischen Datenbank ausgeführt. Nach Beendigung des letzten Tests wird die Datenbank gedroppt, so dass beim nächsten Durchlauf wieder mit einem Stand, der einer frischen UliCMS Installation entspricht begonnen wird.

Bitte beachten Sie bitte auch die Kommentare zu den dbmigrator_* Konfigurationsvariablen in obigen Snippet.
Sie können diese Konfigurationsumgebung ebenfalls verwenden, wenn Sie Unit Tests für ein eigenes Modul oder Theme schreiben.

Sie können nunter Linux oder macOS ihre eigenen Testfälle wie folgt im test Environment ausführen:

env ULICMS_ENVIRONMENT=test vendor/bin/phpunit --bootstrap ./init.php content/modules/name_meines_moduls/tests

Don't click this link