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 pageassertThat()并不表示它是否增加断言计数,并且搜索进一步的文档没有任何结果。

我需要做什么才能使这个自定义断言计为一个断言并正确递增断言计数?

答案

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 但仍然获得失败/报告列表?

当 JUnit 5 没有 assertThat() 函数时,如何将 Hamcrest 与 JUnit 5 一起使用?

Junit4中的新断言assertThat的是用方法

验证是不是在 Assertj 中调用了断言

检查类是不是具有使用 PHPUnit 定义的常量的正确方法