Ich habe eine Testmethode, die wie folgt aussieht:
$row = $this->GetRowFromUserTable($id);
$this->assertLessThan(time(), time($row['last_update']));
Wenn $row null ist, sollte der Zugriff auf $row['last_update'] eine E_NOTICE auslösen und dieser Test sollte fehlschlagen, aber das tut er nicht.
Dieser Code schlägt beim ersten Assert fehl, also weiß ich, dass $row null ist (fixture ist dasselbe):
$row = $this->GetRowFromUserTable($id);
$this->assertNotNull($row);
$this->assertLessThan(time(), time($row['last_update']));
Wenn ich dies schreibe:
$row = $this->GetRowFromUserTable($id);
$this->assertEquals(E_ALL, error_reporting());
$this->assertLessThan(time(), time($row['last_update']));
es gelingt, so bin ich auch sicher, dass error_reporting richtig ist und diese Situation muss etwas mit PHPUnit zu tun haben.
Ich verwende PHPUnit 3.5.6
Ich habe diese Frage gelesen: Kann ich PHPUnit dazu bringen, fehlzuschlagen, wenn der Code eine Meldung auslöst? aber die Antwort schlägt vor, eine neuere Version von PHPUnit zu verwenden, aber diese Antwort ist von 2009, also ist es nicht das Richtige.
EDITAR: Ich verwende NetBeans IDE 6.9.1, um meinen Test durchzuführen.