【发布时间】:2017-09-12 13:21:39
【问题描述】:
我有一个 SF3 应用程序和许多功能测试。 在每次测试之前,我们都会加载并清除所有夹具。 所有测试的时间都那么长。 我想只加载一次固定装置,然后在最后一次测试后截断。
这是提高功能测试速度的好方法吗?
phpunit 中是否有一个 php 方法在所有测试之前只启动一次? (因为 setUpBeforeClass 是在每次测试之前执行的)
我的测试类中的 setUpBeforeClass 方法示例。
class SearchRegisterControllerTest extends WebTestCase
{
/** @var Client $client */
private $client;
protected static $application;
public static function setUpBeforeClass()
{
$kernel = static::createKernel();
$kernel->boot();
$em = $kernel->getContainer()->get('doctrine.orm.entity_manager');
$schemaTool = new SchemaTool($em);
$metadata = $em->getMetadataFactory()->getAllMetadata();
$schemaTool->dropSchema($metadata);
$schemaTool->createSchema($metadata);
/** @var Client $client */
$client = static::createClient();
$em = $client->getContainer()->get('doctrine.orm.entity_manager');
$loader = new Loader();
$loader->loadFromDirectory('src/MyNameSpace/AppBundle/DataFixtures/ORM');
$purger = new ORMPurger();
$executor = new ORMExecutor($em, $purger);
$executor->execute($loader->getFixtures(), true);
}
提前致谢。
【问题讨论】:
标签: performance symfony doctrine-orm phpunit fixtures