我正在尝试为使用 PHPUnit 的 php 应用程序实现类似 Django 的测试实用程序。像 Django 一样,我的意思是在运行第一个测试之前从主数据库创建一个单独的测试数据库,并在运行最后一个测试后删除它。即使一次运行许多测试用例,测试数据库也只需要创建一次。
为此,我采取了以下方法 -
我定义了一个自定义测试套件类,这样我就可以在它的 setup 和 teardown 方法中编写用于创建和删除数据库的代码,然后使用这个类来运行测试,如下所示
$ phpunit MyTestSuite
MyTestSuite 定义了一个名为suite
where I just use的静态方法glob
,并将测试添加到测试套件,如下所示
public static function suite() {
$suite = new MyTestSuite();
foreach (glob('./tests/*Test.php') as $tc) {
require_once $tc;
$suite->addTestSuite(basename($tc, '.php'));
}
return $suite;
}
所有测试用例类都从 的子类扩展而来PHPUnit_Framework_TestCase
,该类的设置和拆卸方法负责从 json 夹具文件中加载和清除初始数据。
现在作为没有。测试的数量正在增加,我一次只需要运行一个选定的测试。但是由于我已经在使用测试套件加载测试,所以不能使用 --filter 选项。这让我觉得这种方法可能不是正确的方法。
所以我的问题是,无论 PHPUnit 如何找到它们,在运行第一个测试之前和运行最后一个测试之后做某事的正确方法是什么?
PS:我没有使用 PHPUnit_Extensions_Database_TestCase,而是我自己的创建、填充和删除数据库的实现。