PHPUnit:如何在“test…”方法之外使用断言?

PHPUnit:如何在“test…”方法之外使用断言?,phpunit,Phpunit,我有以下代码: private function registerShutdownFunction(): void { register_shutdown_function(function () { $this->dropDatabasesAndUsersIfExist(); }); } 该代码: private function dropDatabasesAndUsersIfExist(): void { // some code for de

我有以下代码:

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忽略了测试方法之外的断言


而且可能会出现问题,因为此关闭函数在脚本死亡之前直接运行…

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

PHPUnit\Framework\Assert::assertNotContains($connection, $databases);
编辑:在再次阅读你的问题后,我不确定我的答案是否对你有帮助。如果我没弄错的话,您已经在使用断言了,但它的行为并不像您预期的那样。我的猜测是,如果DropDatabases和UserSifExist中的任何断言未满足,您希望整个测试运行失败

一种解决方案是将您在DropDatabases和UserSifExist中执行的检查移动到一个单独的测试类中,该类应该最后执行。您可以通过在测试套件之后添加另一个带有新类的测试套件来实现这一点