【问题标题】:PHPUnit: how to use assertions outside of the "test..." methods?PHPUnit:如何在“测试...”方法之外使用断言?
【发布时间】:2020-06-17 14:25:31
【问题描述】:

我有以下代码:

private function registerShutdownFunction(): void
{
    register_shutdown_function(function () {
        $this->dropDatabasesAndUsersIfExist();
    });
}

还有这段代码:

private function dropDatabasesAndUsersIfExist(): void
{
    // some code for deletion of the databases...

    foreach ($connections as $connection) {
        $this->assertNotContains($connection, $databases);
    }
}

dropDatabasesAndUsersIfExist 不是“测试...”方法。并且 phpunit 会忽略测试方法之外的断言。

而且好像有可能会出现问题,因为这个shutdown函数在脚本死掉之前直接运行...

【问题讨论】:

    标签: phpunit


    【解决方案1】:

    如果您确实想要这样做,您可以在测试用例之外使用 PHPUnit 的 Assert 类:

    PHPUnit\Framework\Assert::assertNotContains($connection, $databases);
    

    编辑:再次阅读您的问题后,我不确定我的回答是否对您有所帮助。如果我说得对,您已经在使用该断言,但它的行为与您预期的不同。我的猜测是,如果不满足 dropDatabasesAndUsersIfExist 中的任何断言,您希望整个测试运行失败。

    一种解决方案可能是将您在dropDatabasesAndUsersIfExist 中进行的检查移至应最后执行的单独测试类。您可以通过在您的测试套件之后添加另一个带有新类的测试套件来实现此目的。

    【讨论】:

      猜你喜欢
      • 2014-02-21
      • 2014-08-12
      • 1970-01-01
      • 2021-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-15
      相关资源
      最近更新 更多