Kolumne: Quality Time
Kommentare

In aller Regel kann man spätestens nach einer Woche diese Meldung im Zusammenhang mit dem Methodennamen nicht mehr verstehen, ohne einen Blick in den Quelltext des Tests zu werfen.
Glücklicherweise bietet

In aller Regel kann man spätestens nach einer Woche diese Meldung im Zusammenhang mit dem Methodennamen nicht mehr verstehen, ohne einen Blick in den Quelltext des Tests zu werfen.

Glücklicherweise bietet PHPUnit [2] genau hierfür ein sehr nützliches Feature: Mithilfe der @depends-Annotation kann für jeden Test eine Testmethode definiert werden, die vorher ausgeführt werden muss. Der Rückgabewert dieser vorgelagerten Testmethode wird dann als erster Parameter an den aktuellen Test übergeben. Hierdurch hat man die Möglichkeit, jeden Aspekt des SUT separat zu testen und durch das Weiterreichen des Rückgabewerts die Vorbedingungen der nachfolgenden Testmethoden sicherzustellen. Und hier unser Beispiel mit der @depends-Annotation:

class CollectionTestSingleAssert extends PHPUnit_Framework_TestCase { 
    public function testInitialCollectionIsEmpty() {
        $collection = new Collection(); 
        $this->assertSame( 0, $collection->size() ); 
        return $collection; } 
    /** 
     * @depends testInitialCollectionIsEmpty 
     */ 
    public function testAddIncreasesElements( Collection $collection ) { 
        $collection->add( "X" ); 
        $this->assertSame( 1, $collection->size() ); 
        return $collection; } 
    /** 
     * @depends testAddIncreasesElements 
     */ 
    public function testRemoveDecreasesElements( Collection $collection ) { 
        $collection->remove( 0 ); 
        $this->assertSame( 0, $collection->size() ); } 
}

Wie man sieht, erfüllt diese Version des Tests das Single-Assert-per-Test-Prinzip und zusätzlich bekommt man jetzt für jede einzelne Testmethode eine sich auf den ersten Blick erschließende und lesbare Meldung.

Manuel Pichler ist Diplom-Informatiker (FH) und arbeitet seit mehr als zehn Jahren in professionellen Webprojekten auf Basis von PHP. Er ist der Kopf hinter einer Vielzahl von Quality-Assurance-Werkzeugen, die er als Open-Source-Projekte mit anderen Entwicklern teilt. Manuel ist Mitgründer der Qafoo GmbH (http://qafoo.com), die Teams dabei unterstützt, hochqualitative PHP-Anwendungen zu entwickeln. Hierzu zählt Consulting und individuelles Training u. a. zu den Themen Automatisierung, Testing, Continuous Intgration und Deployment.
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -