在我正在编写的测试中setUpBeforeTests
在数据库中创建了一个新客户,然后当我完成测试时,我就会自然地执行测试,我应该在{{1因此,当我重新运行测试并且没有得到任何误报时,我可以重新创建
如何测试全部运行正常我没有问题但是如果测试失败并且我重新运行它我的tearDownAfterTestClass
失败,因为我检查它中的mysql错误
setUpBeforeTests
我得到的错误是存在主键违规,这是因为我正在尝试使用相同的数据创建新客户(主键是在用于登录的电子邮件中)但是这意味着什么时候测试失败,它没有运行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
在测试失败时不会运行
注意:数据库是我正在测试的系统的基本部分,数据库和系统是在一个单独的开发环境而不是实时的,数据库的备份文件几乎是2 GB并且几乎需要1/2要恢复一个小时,拆除的目的是删除因测试而添加的任何数据,以便我们每次运行测试时都不必恢复数据库