在PHPStorm中,如何在PHPUnit类的方法中断点?

时间:2012-10-02 15:48:57

标签: php debugging phpunit phpstorm

在PHPStorm中,我想调试一个PHPUnit类。如果我在单元测试类(继承自PHPUnit_Framework_TestCase的类)的方法中设置断点,每当我运行测试时,PHPStorm都会执行测试,但永远不会在断点处停止,即使有断点在以前停止的其他地方。

这是PHPStorm中的错误吗?如何在PHPUnit_Framework_TestCase的方法中停止?

4 个答案:

答案 0 :(得分:8)

为了使PHPStorm在测试中的断点处停止,你必须“调试”(Shift + F9)但不要“运行”(Shift + F10)你的配置。

答案 1 :(得分:5)

如果您的测试用例具有@runInSeparateProcess注释或在phpuint.xml配置文件中,<phpunit processIsolation="true">标记具有processIsolation属性,并且其值为true,则调试器将不会在断点上停止,因为它正在运行在一个单独的线程中。

答案 2 :(得分:1)

仔细检查放置断点的文件实际上是要执行的文件。您可能安装了多个版本的PHPUnit。

或者覆盖您自己的tests文件夹中的Testcase并从中扩展。创建一个具有相同名称和参数的函数,以便将断点放在那里。然后将呼叫连接到父母:

class My_TestCase extends PHPUnit_Framework_TestCase
{
    public function funcToTest($param) {
        return parent::funcToTest($param);
    }
}

然后让测试从该测试用例类扩展,并将断点放在那里。当你点击它时,你可以进一步深入实际找出phpunit中使用的具体文件以及它放在磁盘上的位置。

答案 3 :(得分:0)

尝试查找是否有安装了Xdebug的正确PHP解释器。我有类似的问题,没有断点的原因是PHPStorm中配置了几个解释器的原因,并且未选择具有Xdebug的正确解释器。您可以通过编辑PHPStorm Settings > Languages and Frameworks > PHP

来更改解释器