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.



