使用Symfony'时如何在Behat中使用PHPUnit;那是普尼特桥吗?
在我的Behat上下文中,我已被包含在PHPUnit的断言中,如中所述: 然而,我现在使用的是Symfony,因此我已经删除了显式安装的PHPUnit,并使用了桥带来的PHPUnit。我需要这样做以避免所描述的“多版本”错误 但是现在,我不能在behat中使用PHPUnit使用Symfony'时如何在Behat中使用PHPUnit;那是普尼特桥吗?,php,symfony,phpunit,behat,Php,Symfony,Phpunit,Behat,在我的Behat上下文中,我已被包含在PHPUnit的断言中,如中所述: 然而,我现在使用的是Symfony,因此我已经删除了显式安装的PHPUnit,并使用了桥带来的PHPUnit。我需要这样做以避免所描述的“多版本”错误 但是现在,我不能在behat中使用PHPUnit PHP Warning: Uncaught exception 'Symfony\Component\Debug\Exception\ContextErrorException' with message 'Warning
PHP Warning: Uncaught exception 'Symfony\Component\Debug\Exception\ContextErrorException' with message 'Warning: require_once(PHPUnit/Autoload.php): failed to open stream: No such file or directory'
如何引用PHPUnit桥引入的PHPUnit实例?事实证明,我需要按照路径要求供应商中的相关文件。对我来说,这是:
require_once(__DIR__.'/../../vendor/symfony/phpunit-bridge/bin/.phpunit/phpunit-5.7/vendor/autoload.php');
require_once(__DIR__.'/../../vendor/symfony/phpunit-bridge/bin/.phpunit/phpunit-5.7/src/Framework/Assert/Functions.php');
对于Symfony 4,这足以让它为我工作:
require_once(__DIR__ . '/../../vendor/bin/.phpunit/phpunit-5.7/vendor/autoload.php');
然而,这并不是一个很好的解决方案,因为如果使用PHP7.2,PHPUnit桥将安装PHPUnit 6.3而不是5.7
我尝试按如下方式更改composer.json:
"autoload-dev": {
"psr-4": {
"App\\Tests\\": "tests/"
},
"classmap": [
"vendor/bin/.phpunit"
]
},
它确实可以工作,但会中断新安装,因为只有运行simple phpunit
,文件夹才存在
我怀疑这可以通过使用composer脚本来运行
简单的phpunit
来解决,但我对安装后cmd
和预自动加载转储的简短实验毫无结果。@lauda恐怕两天内你无法接受你自己的问题答案。但我打算这么做。你可能也想向上游报告这件事。由于这与Behat有关,它可能会有一些吸引力(或者已经有了更好的解决方案)。不过,我不太确定我会在哪里报告这件事。
"autoload-dev": {
"psr-4": {
"App\\Tests\\": "tests/"
},
"classmap": [
"vendor/bin/.phpunit"
]
},