2013-12-20 4 views
8

Ich frage mich:Wie trennen Sie Unit- und Funktionstests in Symfony2?

  1. wenn es eine gute Idee zu trennen Tests (Einheit | Functional ...) in Symfony2,
  2. und , wie ich trennen sollte:

Nach Ordnerstruktur:

tests 
|-- functional  
|-- unit 

von config in phpunit.xml:

<testsuites> 
    <testsuite name="unit">...</testsuite> 
    <testsuite name="functional">...</testsuite> 
</testsuites> 

Durch Anmerkung

/** 
* @group unit  
*/ 
function testMyUnit() 

Es ist ein ein sinnvoller Ansatz? gibt es einen Standardweg dafür? Welche "Ebenen" trennen sich (Einheit> Integration> Funktional)? Und wie kann ich davon profitieren, wenn ich mit diesen Tests manuell und am schnellsten spielen und Berichte über rationale Berichterstattung in Jenkins erhalten möchte?

+0

Was stimmt nicht mit dem Standardansatz, Ihre Funktionstests in den Controller-Ordner Ihres Bundles zu übertragen? –

+0

Wo werden Integrationstests (z. B. mit Kernel oder Container) oder "Funktionscode" aus dem Controller entfernt? – Koryonik

Antwort

5

Sie können zwei Konfigurationsdateien verwenden - eine für funktionale und eine für Komponententests. Dann können Sie Ihre Komponententests getrennt von funktionalen ausführen. Sie möchten, dass Ihre Komponententests so schnell wie möglich ausgeführt werden oder sonst niemand zur Entwicklungszeit ausgeführt wird. Dieser Ansatz funktioniert also sehr gut.

phpunit -c app/phpunit.xml 
phpunit -c app/phpunit_functional.xml 

Die Verzeichnisstrukturen verwenden wir:

src/Namespace/Bundle/Tests/Unit/ 
src/Namespace/Bundle/Tests/Functional/ 

Der zweite Weg ist eine Konfigurationsdatei hat und phpunit --testsuite unit läuft.

+0

Wie funktioniert das über mehrere Bundles hinweg? Muss ich jedes Mal eine globale phpunit-Datei aktualisieren, wenn ich ein Bündel hinzufüge/entferne? –

Verwandte Themen