1

我正在使用 Symfony 2、PHPUnit 3.7.10 和 PhpStorm 5.0.4。

. _ _ _namespace Acme\DemoBundle\Tests

当我使用监听器工作从 CLI 调用 phpunit 时vendor/bin/phpunit.bat -c app/ ,测试成功。

我发现了这个:PHPUnit、PHPUnit_Framework_TestListener、Netbeans 和 PHPUnit xml 配置,但这似乎是另一个问题。

但是当我在 PhpStorm 中开始测试时,监听器没有加载,一些对象应该被注入到一个抽象的测试类中,在这种情况下是 null。我还注意到,当我在 MyTestListener 类中使用断点进行调试时,调试器不会在此类中停止,其他断点可以正常工作。

phpunit.xml 条目:

    <listeners>
       <listener class="Acme\DemoBundle\Tests\MyTestListener" file="../src/Acme/DemoBundle/Tests/MyTestListener.php">
       </listener>
    </listeners>

我也尝试添加一个空元素,它没有帮助。

在我的 PhpStorm 运行/调试配置中,我指定了 phpunit.xml引导文件。我还为命令行/解释器添加了这个选项:-d auto_prepend_file=vendor/autoload.php

phpunit.xml 中的监听器配置似乎被解析了,但不起作用。当我将类名更改为无效的文件/类时,我收到一个错误,即文件无法打开流。我也尝试使用绝对文件路径或将斜杠更改为反斜杠,没有任何效果。

4

1 回答 1

0

真可惜……我发现了自己的错误

我从 CLI 进行所有测试,但在 PhpStorm 中只有一个测试类,所以套件名称不同,在我的侦听器类中,我仅在套件名称匹配时才执行此操作:

if ($suite->getName() == "db-tests") {...}

所以解决方案是将表达式扩展到

$name = $suite->getName();
if ($name == "db-tests" || 
   strpos($name, 'Acme\DemoBundle\Tests\Database') !== false) {...}
于 2013-02-13T16:46:27.070 回答