Mit PHPUnit auf Exceptions testen
Monday, January 28th, 2008Nach längerer Zeit mal wieder ein Eintrag zu PHPUnit in meiner losen Reihe zum Thema. Diesmal mit einem Beitrag, wie man mit den verbreiteten Unittests auf Ausnahmen testet.
Will man bei einem Unittest auf eine ausgelöste Exception testen, war man bisher gezwungen seine Testklasse von PHPUnit_Extension_ExceptionTest abzuleiten. Mit der Version 3.2.0 wurde diese Funktionalität in die Standardklasse gemerged, also in PHPUnit_Framework_TestCase. Fortan ist es möglich mit seinen normalen Testklassen auch auf Exceptions zu testen.
Weiterhin ist es möglich nicht nur auf eine Exception allgemein zu testen sondern auf eine präzise Nachricht, die von der Ausnahme ausgegeben wird. Dieses Feature ist besonders da sinnvoll, wo viele Ausnahmetypen von einer Ausnahmeklasse abgeleitet werden, etwa bei Frameworks.
In Code bedeutet dies beispielsweise:
<?php
class Test extends PHPUnit_Framework_TestCase {
public function testTest() {
$this->setExpectedException('Exception', 'Ausnahme wurde geworfen');
throw new Exception('Ausnahme wurde geworfen');
}
}
?>