我正在使用Vagrant VM上的 CakePHP 3.x 项目。我的项目有一个控制器测试。 Project使用 composer 进行设置,phpunit安装在 vendor 目录中。
运行./vendor/bin/phpunit
测试会引发以下错误:
[vagrant@devenv-lamp ~/www]$ ./vendor/bin/phpunit Tests
PHP Fatal error: Interface 'PHPUnit\Framework\TestListener' not found in /vagrant/vendor/cakephp/cakephp/src/TestSuite/Fixture/FixtureInjector.php on line 30
Fatal error: Interface 'PHPUnit\Framework\TestListener' not found in /vagrant/vendor/cakephp/cakephp/src/TestSuite/Fixture/FixtureInjector.php on line 30
我尝试为单个Controller运行PHPUnit - 结果相同......
[vagrant@devenv-lamp ~/www]$ ./vendor/bin/phpunit tests/TestCase/Controller/QuestionsControllerTest.php
PHP Fatal error: Interface 'PHPUnit\Framework\TestListener' not found in /vagrant/vendor/cakephp/cakephp/src/TestSuite/Fixture/FixtureInjector.php on line 30
Fatal error: Interface 'PHPUnit\Framework\TestListener' not found in /vagrant/vendor/cakephp/cakephp/src/TestSuite/Fixture/FixtureInjector.php on line 30
我对PHPUnit非常陌生,即使没有起步,我也遇到了困难。任何帮助将非常感谢。
答案 0 :(得分:0)
看起来自动加载设置不正确。
在phpunit.xml中,您需要指定引导程序文件。这可以是基于您的项目的自定义脚本,或者在某些情况下,它可以像使用composer的autoload.php一样简单:
<phpunit
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/3.7/phpunit.xsd"
bootstrap="vendor/autoload.php"
>
...
</phpunit>