Phpunit 在所有测试之前运行命令
我创建了一个Symfony命令,将应用程序重置为初始状态。要从cli运行该命令,我需要键入:Phpunit 在所有测试之前运行命令,phpunit,symfony,Phpunit,Symfony,我创建了一个Symfony命令,将应用程序重置为初始状态。要从cli运行该命令,我需要键入: php bin/console app:reset 我希望在所有单元测试之前运行该命令一次。每次考试前,我都能做到这一点,当然,在所有课程前,我也能做到这一点。因此,我使用了该代码: public function setUp() { $kernel = new \AppKernel('test', true); $kernel->boot(); $app = new \
php bin/console app:reset
我希望在所有单元测试之前运行该命令一次。每次考试前,我都能做到这一点,当然,在所有课程前,我也能做到这一点。因此,我使用了该代码:
public function setUp()
{
$kernel = new \AppKernel('test', true);
$kernel->boot();
$app = new \Symfony\Bundle\FrameworkBundle\Console\Application($kernel);
$app->setAutoExit(false);
$app->run(new ArrayInput([
'command' => 'app:reset', ['-q']
]), new NullOutput());
}
如上所述,在每个测试之前以及使用setUpBeforeClass()
我可以在每个类之前使用它,但是在所有测试之前使用一次就足够了,因为该命令需要一些时间来运行。您可以实现并使用静态属性来确保您的命令只执行一次
PHPUnit 5.4的示例:
Symfony文档解释了如何做到这一点:
简而言之,您需要修改
phpunit.xml.dist
来调用您自己的引导程序,而不是默认引导程序(并委托给默认引导程序)。好主意,去看看吧!经过一些实验,我发现您也可以使用常规成员变量。通过这种方式,您可以创建一个基类,多个“运行一次”子侦听器可以从中继承。类似地,每个侦听器都可以将自己注册为关机函数(从基类执行此操作),以提供endTestSuite
功能。这是最简单的方法。根据您的解释,无需转到Symfony文档。谢谢这是一种魅力。