Es ist in Ordnung, mehrere Behauptungen im selben Test zu haben, aber wenn eine Behauptung fehlschlägt, wird der gesamte Test abgebrochen und andere Behauptungen im selben Test werden nicht getestet.
Abhängig davon, was Sie testen und wie Sie es codiert haben, möchten Sie möglicherweise einige Tests in mehrere Untertests aufteilen.
OverAssertive ist eine PHPUnit-Erweiterung, die direkt in der Konsole meldet, welche Tests „zu viele“ Zusicherungen haben, wobei „zu viele“ das ist, was Sie definieren, um Ihnen bei der Inspektion und eventuellen Umgestaltung einiger Tests zu helfen.
Aktivieren Sie es mit allen Standardeinstellungen, indem Sie Folgendes zur Datei phpunit.xml
Ihrer Testsuite hinzufügen:
<phpunit bootstrap="vendor/autoload.php"> ... <Listener> <listener class="OzhPHPUnitListenerOverAssertiveTestsListener" /> </listeners> </phpunit>
Wenn Sie keinen Autoloader verwenden, können Sie auch den Speicherort der Bibliothek angeben:
<phpunit bootstrap="boostrap.php"> ... <Listener> <listener class="OzhPHPUnitListenerOverAssertiveTestsListener" file="/path/to/OverAssertiveTestsListener.php" /> </listeners> </phpunit>
Führen Sie nun Ihre Testsuite wie gewohnt aus. OverAssertive meldet über durchsetzungsfähige Tests in der Konsole, nachdem die Suite abgeschlossen ist.
OverAssertive verfügt über zwei konfigurierbare Parameter:
AlertThreshold – Anzahl der Assertionen, die einen Test über Assertive durchführen (Standard: 10 Assertionen)
reportLength – Anzahl der im Bericht enthaltenen übermäßig durchsetzungsfähigen Tests (Standard: 10 Tests)
Diese Konfigurationsparameter werden beim Hinzufügen des Listeners in phpunit.xml
festgelegt:
<phpunit ...><!-- ... andere Suite-Konfiguration hier ... --><listeners> <listener class="OzhPHPUnitListenerOverAssertiveTestsListener"> <Argumente> <array> <element key="alertThreshold"> <integer>10</integer> </element> <element key="reportLength"> <integer>10</integer> </element> </array> </arguments> </listener> </listeners> </phpunit>
Vielen Dank an phpunit-speedtrap
Mach, was zum Teufel du willst.