有没有办法在 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
}
当 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
}