6

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

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

4

4 回答 4

10

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

于 2012-10-12T09:47:45.327 回答
6

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

于 2016-07-14T11:45:16.957 回答
1

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

或者覆盖您自己的测试文件夹中的测试用例并从中扩展。创建一个具有相同名称和参数的函数,您希望在其中放置断点。然后只需将呼叫连接到父级:

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

然后让您的测试从该测试用例类扩展,并将断点放在那里。当您点击它时,您可以更深入地了解实际使用了 phpunit 中的哪个具体文件以及它在磁盘上的位置。

于 2012-10-11T13:13:31.900 回答
0

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

于 2015-03-28T16:14:16.360 回答