2016-07-26 14 views
3

Einige meiner Testfälle verwenden eine benutzerdefinierte Testbibliothek. Auch diese Testfälle sind sehr langsam. Ich möchte sie also nur auf dem Buildserver und nicht in meinem lokalen ausführen. Ich möchte die anderen Tests lokal ausführen.Ausschließen bestimmter Tests beim Laden in PHP

Folgendes ist die Verzeichnisstruktur. Die Dateien im Verzeichnis slow sind die langsamen Testfälle, die ausgeschlossen werden sollten.

/tests/unit-tests/test-1.php 
/tests/unit-tests/test-2.php 
/tests/unit-tests/slow/test-1.php 
/tests/unit-tests/slow/test-2.php 
/tests/unit-tests/foo/test-1.php 
/tests/unit-tests/bar/test-2.php 

ich versuchte, Gruppen unter Verwendung von @group Annotation zu schaffen. Das funktioniert, aber das Problem ist, dass diese Testdateien geladen werden (Tests werden jedoch nicht ausgeführt). Da sie die Testbibliothek benötigen, die nicht lokal installiert ist, gibt es einen Fehler.

Was ist der beste Weg, um die phpunit.xml-Konfiguration zu erstellen, so dass diese langsamen Tests standardmäßig ausgeschlossen sind (und nicht einmal geladen werden) und bei Bedarf ausgeführt werden können?

Antwort

4

Es gibt 2 Möglichkeiten:

1) In Ihrem phpunit.xml 2 Test Anzügen erstellen - eine für CI-Server und eine für die lokale Entwicklung

<testsuites> 
    <testsuite name="all_tests"> 
     <directory>tests/unit-tests/*</directory> 
    </testsuite> 
    <testsuite name="only_fast_tests"> 
     <directory>tests/unit-tests/*</directory> 
     <!-- Exclude slow tests --> 
     <exclude>tests/unit-tests/slow</exclude> 
    </testsuite> 
</testsuites> 

So auf CI-Server können Sie laufen

phpunit --testsuite all_tests 

Und lokal

phpunit --testsuite only_fast_tests 

Offensichtlich können Sie Testsuiten benennen, wie Sie möchten.

2) Ich denke, bevorzugter Weg ist:

  • phpunit.xml.dist Erstellen und Standardausführung phpunit (für CI-Server und alle diejenigen, die nur geklonte Repository)
  • Ändern phpunit.xml durch die Konfiguration Ihrer lokale Ausführung von phpunit konfiguriert (durch Hinzufügen von <exclude>tests/unit-tests/slow</exclude> zu Standard Testsuite)
  • phpunit.xml von Versionskontrolle ausschließen.

Vom docs:

Wenn phpunit.xml oder phpunit.xml.dist (in dieser Reihenfolge) gibt es in dem aktuellen Arbeitsverzeichnis und --configuration nicht verwendet wird, die Die Konfiguration wird automatisch aus dieser Datei gelesen.


Einige Links:

The XML Configuration File. Test Suites

How to run a specific phpunit xml testsuite?

Verwandte Themen