0

在测试中,我正在编写setUpBeforeTests在数据库中创建一个新客户,然后用于执行测试,所以当我完成测试时,我应该摆脱这个测试客户,tearDownAfterTestClass这样当我重新运行时我可以重新创建测试并且没有得到任何误报

当测试都运行良好时我没有问题但是如果测试失败并且我去重新运行它我的setUpBeforeTests失败因为我像这样检查它中的mysql错误

try
{
    if(!mysqli_query($connection,$query))
    {
        $this->assertTrue(false);
    }
}
catch (Exception $exc)
{
    $msg = '[tearDownAfterTestClass] Exception Error' . PHP_EOL . PHP_EOL;
    $msg .= 'Could not run query - '.mysqli_error($connection). PHP_EOL;;
    $this->fail($msg);
}

我得到的错误是存在主键违规,这是预期的,因为我正在尝试使用相同的数据创建新客户(主键在电子邮件上,也用于登录)但这意味着测试失败时它没有运行tearDownAfterTestClass

现在我可以将所有内容tearDownAfterTestClass移到开头,setUpBeforeTests但是对我来说这似乎是糟糕的编程,因为它违背了甚至拥有的目的tearDownAfterTestClass

所以我想知道,为什么tearDownAfterTestClass当测试失败时我没有运行

注意:数据库是我正在测试的系统的基本部分,并且数据库和系统位于单独的开发环境中,而不是实时开发环境,数据库的备份文件几乎是 2 GB,几乎需要 1/2 小时才能完成restore,拆解的目的是为了去掉我们因为测试而添加的任何数据,这样我们就不用每次运行测试都恢复数据库了

4

0 回答 0