在 PHPStorm 中,我想调试一个 PHPUnit 类。如果我在单元测试类(继承自 的类PHPUnit_Framework_TestCase
)的方法中设置断点,则每当我运行测试时,PHPStorm 都会执行测试,但不会在断点处停止,即使在它的其他地方有断点也是如此用来停止。
这是 PHPStorm 中的错误吗?如何停止在一个PHPUnit_Framework_TestCase
's 方法?
为了使 PHPStorm 在测试中的断点处停止,您必须“调试”(Shift + F9)而不是“运行”(Shift + F10)您的配置。
如果您的测试用例有@runInSeparateProcess 注释或在phpuint.xml 配置文件中<phpunit processIsolation="true">
标记具有processIsolation 属性并且它的值为true,那么调试器将不会在断点处停止,因为它在单独的线程中运行。
仔细检查您放置断点的文件是否实际上是正在执行的文件。您可能安装了多个版本的 PHPUnit。
或者覆盖您自己的测试文件夹中的测试用例并从中扩展。创建一个具有相同名称和参数的函数,您希望在其中放置断点。然后只需将呼叫连接到父级:
class My_TestCase extends PHPUnit_Framework_TestCase
{
public function funcToTest($param) {
return parent::funcToTest($param);
}
}
然后让您的测试从该测试用例类扩展,并将断点放在那里。当您点击它时,您可以更深入地了解实际使用了 phpunit 中的哪个具体文件以及它在磁盘上的位置。
尝试查找您是否拥有安装了 Xdebug 的正确 PHP 解释器。我有类似的问题,没有断点的原因是在 PHPStorm 中配置了几个解释器,并且没有选择具有 Xdebug 的正确解释器。您可以通过编辑PHPStorm Settings > Languages and Frameworks > PHP