我正在一个Sylius项目中工作,并且我有一些功能测试。碰巧的是Sylius已改用Symfony 3.2,此后我的大量测试不再起作用。
每当我尝试运行测试时,我都会得到
之类的错误DoctrineCommonAnnotationsAnnotationException: [Semantical Error] The annotation "@DoctrineORMMappingEntity" in class ...EntityBlock does not exist, or could not be auto-loaded.
我的phpunit.xml看起来像
<?xml version="1.0" encoding="UTF-8"?>
<phpunit colors="true"
bootstrap="var/bootstrap.php.cache">
<php>
<server name="KERNEL_DIR" value="./app" />
</php>
<testsuites>
<testsuite name="Application Test Suite">
<directory>./src/AppBundle/Tests/</directory>
</testsuite>
</testsuites>
最后,我的测试具有这种设置
abstract class BaseTestCase extends KernelTestCase {
...
protected function setUp()
{
static::bootKernel();
}
}
对我的设置可能出了什么想法?
找到了修复程序。我决定查看SF标准存储库中的phpunit.xml,然后将我的" Boostrap"选项更改为" app/autoload.php"。这解决了我遇到的错误。
<?xml version="1.0" encoding="UTF-8"?>
<phpunit colors="true"
bootstrap="app/autoload.php">
<php>
<server name="KERNEL_DIR" value="./app" />
</php>
<testsuites>
<testsuite name="Application Test Suite">
<directory>./src/AppBundle/Tests/</directory>
</testsuite>
</testsuites>