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

时间:2016-10-26 09:48:19

标签: unit-testing loops phpunit conditional-statements

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

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

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

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

可能没有理由运行断言(或者可能存在断言),但这纯粹是从调试的角度来看这个问题。

1 个答案:

答案 0 :(得分:1)

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

如果我们遵循assertEquals()代码,我们可以看到on line 137 of isEqual.php,如果操作数不相等则抛出新的PHPUnit_Framework_ExpectationFailedException。然后,测试运行器将其转换为控制台输出的“F”,并将if用于报告等。

您可以捕获Exception并在测试用例中使用它执行您喜欢的操作。如果您仍希望测试失败,您可能需要重新抛出它:

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
}