在PHPStorm中,我想调试一个PHPUnit类。如果我在单元测试类(继承自PHPUnit_Framework_TestCase
的类)的方法中设置断点,每当我运行测试时,PHPStorm都会执行测试,但永远不会在断点处停止,即使有断点在以前停止的其他地方。
这是PHPStorm中的错误吗?如何在PHPUnit_Framework_TestCase
的方法中停止?
答案 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