有没有办法在 PHPUnit 中检查 运行 时间的断言结果?

Is there a way to check the result of the assertions at run time in PHPUnit?

当 PHPUnit 为 运行 时,以下断言将生成 .F

$this->assertEquals('foo', $bar);

但是如果我想知道测试本身的断言结果怎么办?类似于:

if ($this->assertEquals('foo', $bar)) {
    // log or do something
} else {
    // do something else
}

可能没有充分的理由有条件地 运行 断言(或者可能有),但这纯粹是从调试的角度来看的问题。

PHPUnit 使用异常来表示测试失败。

如果我们按照 assertEquals() 代码,我们可以看到 on line 137 of isEqual.php,如果操作数不相等,则会抛出一个新的 PHPUnit_Framework_ExpectationFailedException。然后测试运行程序将其转换为 "F" 用于控制台输出,并且还使用 if 用于报告等

您可以捕获异常并在您的测试用例中用它做您喜欢的事。如果您仍然希望测试失败,您可能想重新抛出它:

try {
    $this->assertEquals('foo', $bar);
    // do something else
} catch (PHPUnit_Framework_ExpectationFailedException $e) {
    // log or do something
    throw $e; // rethrow to make sure that the test still fails
}