PHPUnit - 断言失败但我想继续测试

标签 php unit-testing phpunit

->assertTrue(false);
->assertTrue(true);

第一个断言失败并停止执行。但我想继续进一步的代码片段。

PHPUnit有没有可能

最佳答案

其他回答者是正确的 - 如果您希望能够做到这一点,您真的应该将您的断言分成单独的测试。但是,假设您有正当理由想要这样做……有办法。

Phpunit 断言失败实际上是异常,这意味着您可以自己捕获并抛出它们。例如,试试这个测试:

public function testDemo()
{
    $failures = [];
    try {
        $this->assertTrue(false);
    } catch(PHPUnit_Framework_ExpectationFailedException $e) {
        $failures[] = $e->getMessage();
    }
    try {
        $this->assertTrue(false);
    } catch(PHPUnit_Framework_ExpectationFailedException $e) {
        $failures[] = $e->getMessage();
    }
    if(!empty($failures))
    {
        throw new PHPUnit_Framework_ExpectationFailedException (
            count($failures)." assertions failed:\n\t".implode("\n\t", $failures)
        );
    }
}

如您所见,它尝试了两个断言,都失败了,但它一直等到最后将所有失败输出消息作为一个异常抛出。

关于PHPUnit - 断言失败但我想继续测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6832263/

相关文章:

php - Codeception 不会构建在全局配置中配置的模块

php - Python PyQt5 : Cannot save JPG files into database

php - 使用 foreach 代替 while 循环循环 mysql_fetch_assoc

php - 如何使用jquery获取动态输入文本的值?

php - 当我从 phpunit 登录时,当前用户的对象在 Symfony Controller 中为 NULL

php - 模拟正在测试的同一类中的方法

symfony - 如何在 phpunit 功能测试中模拟 symfony Controller 的自动连接服务?

PHP fatal error : call to a member function make() in index. php on line 50 Laravel

visual-studio - Visual Studio 中未启用与测试用例的关联

javascript - 使用 Tape 测试客户端 JS(窗口未定义)