我正在使用Symfony 2,PHPUnit 3.7.10和PhpStorm 5.0.4
我在namespace Acme\DemoBundle\Tests
当我使用vendor/bin/phpunit.bat -c app/
从CLI调用phpunit时
听众工作,测试成功。
我发现了这个:PHPUnit, PHPUnit_Framework_TestListener, Netbeans and the PHPUnit xml config但似乎是另一个问题。
但是当我在PhpStorm中开始测试时,监听器没有加载,一些对象应该被注入抽象测试类,在这种情况下为空。我还注意到,当我在MyTestListener类中使用断点进行调试时,调试器不会在此类中停止,其他断点也能正常工作。
phpunit.xml条目:
<listeners>
<listener class="Acme\DemoBundle\Tests\MyTestListener" file="../src/Acme/DemoBundle/Tests/MyTestListener.php">
</listener>
</listeners>
我也尝试添加一个空元素,它没有帮助。
在我的PhpStorm的运行/调试配置中,我指定了 phpunit.xml 和 bootstrap 文件。
我还为命令行/解释器添加了此选项:-d auto_prepend_file=vendor/autoload.php
phpunit.xml中的监听器配置似乎已被解析,但无法正常工作。当我将类名更改为无效的文件/类时,我收到一个错误,该文件无法打开流。我也尝试使用绝对文件路径或将斜杠更改为反斜杠,没有任何作用。
答案 0 :(得分:0)
真可惜......我发现了自己的错误
我从CLI进行所有测试,但在PhpStorm中只有一个测试类,所以套件名称不同,在我的监听器类中,只有当套件名称匹配时才会执行这些操作:
if ($suite->getName() == "db-tests") {...}
所以解决方案是将表达式扩展到
$name = $suite->getName();
if ($name == "db-tests" ||
strpos($name, 'Acme\DemoBundle\Tests\Database') !== false) {...}