PHPUnit:assertThat()是否增加断言计数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHPUnit:assertThat()是否增加断言计数?相关的知识,希望对你有一定的参考价值。
我有一个自定义断言,不会增加断言计数器。我在这段代码上运行> 1900个断言,最终的断言计数为零。我知道它正在运行断言,因为我可以让它失败。但无论是否失败,它声称零断言都在运行。
这是我的自定义断言的定义:
protected function assertMethodResult($class_name, $method_name, $arguments, $expected, $message='')
{
$condition = new MyConstraint; // proprietary code; extension of phpUnit_Framework_Constraint
self::assertThat(array('class_name'=>$class_name, 'method_name'=>$method_name, 'arguments'=>$arguments, 'expected'=>$expected), $condition, $message);
}
PHPUnit manual page的assertThat()
并不表示它是否增加断言计数,并且搜索进一步的文档没有任何结果。
我需要做什么才能使这个自定义断言计为一个断言并正确递增断言计数?
答案
Constraint
类实现Countable
。在评估约束时,所需的count
方法将返回将添加到计数器的断言数:
https://github.com/sebastianbergmann/phpunit/blob/5.7.26/src/Framework/Assert.php#L2056
你的约束count
方法应至少返回1
,以便计算断言。检查它是否正在返回0
。
以上是关于PHPUnit:assertThat()是否增加断言计数?的主要内容,如果未能解决你的问题,请参考以下文章
Usage and Idioms——Matchers and assertthat
如何在测试过程中停止 PHPUnit 但仍然获得失败/报告列表?